Javascript/Node.js

[ Javascript ] - Nest Js controller 구현하기

algml0703 2022. 7. 13. 23:46
반응형

nestjs에서 controller 는 기본적으로 명령어를 통해 기본 코드가 구현된 파일이 생성된다.

>  nest g controller [생성하려는컨트롤러이름] --no-spec
ex) nest g controller users --no-spec
import { Controller } from '@nestjs/common';

@Controller('users')
export class UsersController {}

기본적인 컨트롤러 구현

각 메서드 함수의 인수에는 경로를 넣어준다. 아래 코드에 따르면 기본 경로는 'users'이다.

import { Controller, Delete, Get, Patch, Post } from '@nestjs/common';

@Controller('users')
export class UserController {
    @Get('')
    getAllUsers() {

    }

    @Get('/:id')
    getUserById() {

    }

    @Post('/')
    createUser() {

    }

    @Patch('/')
    updateUser() {

    }

    @Delete('/:id') 
    deleteUser() {

    }
}

라우터 구조

@Get('')
getAllUsers(): User[] {
    return users;
}

/*
@Get('')  // 메서드와 경로를 설정해준다.
[해당라우터명칭](): [리턴값이 있는 경우 반환값의 타입] {
	return ...
}
*/

값 받기

url에서 값 가져오기

@Get('/:id')
getUserById(@Param('id') id: string) : User {
    return user;
}

/*
@Get('/:id')  // path로 값을 전달받을 때 
getUserById(@Param([받는값]) [받은값을 사용할 변수명] id: [타입]): [반환값의 타입] {

}

@Param을 통해 경로에서 값을 받을 수 있다. 인자로는 받으려는 파라미터명을 적는다.
[받은값을 사용할 변수명]: [타입]은 받은 값을 사용할 변수명을 설정하고 타입을 적는 것이다.

이는 
const id: string = req.params.id
와 같은 것이다.
*/

 

body에서 값 가져오기

@Post('/')
createUser(
    	@Body('name') title: string,
    	@Body('password') description: string
):void {
	... 
}

/*
body값은 @Body()를 통해 받아올 수 있다.
void는 반환값이 없는 경우의 타입이다.
// 참고롤 일반적으로 반환값이 있는 경우에는 Promise<[반환값의타입]> 이와 같은 식으로 타입을 설정한다.
*/

서비스 가져와서 컨트롤러에서 사용하는 경우

import { Controller, Delete, Get, Patch, Post } from '@nestjs/common';

@Controller('users')
export class UserController {

	constructor(private userService: userService) {}
    // constructor ([접근제한자] [해당서비스사용시변수명]: [타입]) {}
    
    @Get('')
    getAllUsers() {
    	// 사용시 아래와 같이 this를 통해 접근하여 사용한다.
        return this.userService.getUsers();

    }
}

 

출처

https://www.youtube.com/watch?v=3JminDpCJNE&t=18396s 

 

반응형