반응형
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
반응형
'Javascript > Node.js' 카테고리의 다른 글
[ Node.js ] - compression으로 데이터 압축하기 (0) | 2022.08.14 |
---|---|
[ Node.js ] - node-cron 활용하여 스케줄러 작동시키기 (0) | 2022.07.27 |
[ Javascript ] - nestjs 기본 세팅 (0) | 2022.07.13 |
[ NestJs ] - NestJs란? (0) | 2022.06.15 |
[ Node.js ] - iamport를 사용해서 pg사 연동해보기 (0) | 2022.06.15 |