Nest Next... 맨날 헷갈림
@Get() //@Post @Put @Delete 등으로 restful API가능
sayHello() {
return 'hello this is movie section';
}
@Delete(':movieId')
deleteMovie(@Param('movieId') id: string, @Body() data) {
return `DELETE movie id:${id} ${data.title}`;
}
//@Param으로 파라미터를 @Body로 바디데이터를 @Query로 쿼리스트링을 가져올 수 있다
//두개 이상은 콤마로 구분한다
계층간 데이터 교환 객체
클라이언트에서 서버로 오는 데이터의 형식을 정할 수 있다
export class CreateBoardDto {
title: string;
desc: string;
}
class와 interface로 만들 수 있는데
class가 es6의 표준임으로 런타임으로 동작해서 Nest가 class를 참조할 수 있지만
interface는 타입스크립트에서 지원하는 것으로 변환 중에 제거되어 Nest가 런타임에 참조할 수 없다
출처: Nest 공식 문서
서버로 들어오는 데이터를 변환하고 유효성 검사를 하는 데 사용된다
express의 미들웨어와 비슷하다
Nest에는 6개의 파이프가 기본적으로 존재한다 (@nestjs/common에서 불러온다)
커스텀 파이프를 따로 만들 수 있다
파이프의 범위는 3가지가 있다
//app.js
app.useGlobalPipes(new ValidationPipe());
모든 데이터에 유효성 검사 파이프를 추가하는 코드다
모듈의 컨텍스트 외부에서 수행되었으므로 모듈 외부에서 등록된 전역 파이프(위의 예에서와 같이)는 종속성을 주입할 수 없습니다. 이 문제를 해결하기 위해 다음 구성을 사용하여 모든 모듈에서 직접 글로벌 파이프를 설정할 수 있습니다.
@Module({
providers: [
{
provide: APP_PIPE,
useClass: ValidationPipe,
},
],
})
라우터 하나에서 파이프를 사용할 때
@Post()
@UsePipes(new JoiValidationPipe(createCatSchema))
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
매개변수에서 불러오기
@Get(':id')
async findOne(@Param('id', new ParseIntPipe()) id) {
return this.catsService.findOne(id);
}
정보 감사합니다.