[TIL] Nest.js 컨트롤러 부분 학습
날짜
- 2022.07.06.
목표
- Nest.js 학습
내용
Nest.js - Controller
- MVC 패턴에서 Controller에 해당
- Request로 받은 데이터를 처리하고 결과를 Response하는 인터페이스 역할
Nest.js - Routing
- 데코레이터 사용
@Get('/hello')
getHello(): string {
return this.appService.getHello();
}
- 와일드카드 사용 가능
@Get('he*lo')
getHello(): string {
return this.appService.getHello();
}
Nest.js - Request/Response Object
import { Request, Response } from 'express';
import { Controller, Get, Req, Res, Param } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get(':id')
getHello(
@Param('id') id: string, // Parameter
@Req() req: Request,
@Res() res: Response
): string {
res.send(this.appService.getHello(id));
}
}
Nest.js - Custom Header
import { Header } from '@nestjs/common';
@Header('Key', 'Value')
@Get()
getHello(): string {
return this.appService.getHello();
}
// 또는
@Header('Key', 'Value')
@Get()
getHello(
@Res() res: Response
): string {
res.header('Key', 'Value');
res.send(this.appService.getHello());
}
Nest.js - Redirection
- 클라이언트를 다른 페이지로 이동시키고 싶은 경우 사용
- HTTP code - 301, 307, 308
- 아니면 제대로 동작 안할 수 있음
@Get('redirect/docs')
@Redirect('https://docs.nestjs.com', 302)
getDocs(@Query('version') version) {
if (version && version === '5') {
return { url: 'https://docs.nestjs.com/v5/' };
}
}
Nest.js - Sub-Domain Routing
하위 도메인 설정
@Controller({ host: 'api.beeimp.com' }) // 하위 도메인 요청 처리 설정 export class ApiController { @Get() // 같은 루트 경로 index(): string { return 'BeeImp API'; // 다른 응답 } }
Nest.js - Payload (@Body)
// DTO(Data Transfer Object) 정의
export class CreateUserDto {
name: string;
email: string;
}
@Post()
create(@Body() createUserDto: CreateUserDto) {
const { name, email } = createUserDto;
return `유저를 생성 - 이름: ${name}, 이메일: ${email}`;
}
결론
- Nest.js 조금만 더 공부하면 편하게 API를 구축할 수 있을 것 같다는 생각이 들었습니다.
'I Learned > TIL' 카테고리의 다른 글
[TIL] Klip, EIP-5114 (0) | 2022.07.10 |
---|---|
[TIL] Nest.js 프로바이더와, React-Native 안드로이드 설정 (0) | 2022.07.08 |
[TIL] Nest.js Decoration (0) | 2022.07.05 |
[TIL] Github Actions 기초 (0) | 2022.07.03 |
[TIL] 무한 스크롤 (0) | 2022.07.03 |