본문 바로가기
카테고리 없음

TIL (2023/09/20) Wednesday

by 0to1ton 2023. 9. 20.

 

- Trello Clone 

- User CRUD 

- Prisma - Relational Data handling

 

- Swagger

Swagger 문서에서 사용되는 @ApiCreatedResponse와 @ApiOkResponse 데코레이터는 각각 다른 HTTP 상태 코드를 나타냅니다. 이 데코레이터들은 NestJS 애플리케이션의 API 엔드포인트에 대한 문서를 생성할 때 사용됩니다.

@ApiCreatedResponse

  • HTTP 상태 코드: 201
  • 일반적인 사용 케이스: 새로운 리소스가 성공적으로 생성되었을 때 사용됩니다.
  • 예시: POST 요청을 통해 새로운 사용자를 생성한 경우, 201 상태 코드와 함께 응답을 반환할 수 있습니다.
typescriptCopy code
import { ApiCreatedResponse } from '@nestjs/swagger'; @Controller('users') export class UsersController { @Post() @ApiCreatedResponse({ description: 'The user has been successfully created.' }) create(@Body() createUserDto: CreateUserDto) { // 로직 } }

@ApiOkResponse

  • HTTP 상태 코드: 200
  • 일반적인 사용 케이스: 요청이 성공적으로 처리되었을 때 사용됩니다. 이는 리소스 생성 외의 다른 작업에 주로 사용됩니다.
  • 예시: GET 요청을 통해 사용자 정보를 조회한 경우, 200 상태 코드와 함께 응답을 반환할 수 있습니다.
typescriptCopy code
import { ApiOkResponse } from '@nestjs/swagger'; @Controller('users') export class UsersController { @Get(':id') @ApiOkResponse({ description: 'The user has been successfully retrieved.' }) findOne(@Param('id') id: string) { // 로직 } }

요약

  • @ApiCreatedResponse: 리소스가 성공적으로 생성되었을 때 사용하며, HTTP 상태 코드 201을 반환합니다.
  • @ApiOkResponse: 요청이 성공적으로 처리되었을 때 사용하며, HTTP 상태 코드 200을 반환합니다.

이 데코레이터들은 Swagger UI에서 해당 엔드포인트에 대한 문서를 자동으로 생성해 줍니다. 이를 통해 API를 사용하는 개발자들이 어떤 상태 코드와 응답을 기대할 수 있는지 알 수 있습니다.

 

 

 

- INestApplication

INestApplication은 NestJS에서 제공하는 인터페이스로, NestJS 애플리케이션의 메인 객체를 타입으로 지정합니다. 이 인터페이스는 애플리케이션의 라이프사이클, 미들웨어, 라우터 등을 관리하는 메서드와 프로퍼티를 정의합니다.

주요 메서드와 프로퍼티

  • use(): 미들웨어를 등록합니다.
  • enableCors(): CORS 설정을 활성화합니다.
  • listen(): 애플리케이션을 지정된 포트에서 실행합니다.
  • close(): 애플리케이션을 종료합니다.
  • get(): 애플리케이션의 인젝터로부터 인스턴스를 가져옵니다.
 

이 인터페이스를 사용하면 TypeScript의 타입 체킹과 자동완성 기능을 활용할 수 있어, 개발 과정에서의 실수를 줄이고 생산성을 높일 수 있습니다.

 

import { NestFactory } from '@nestjs/core'; 
import { AppModule } from './app.module'; 


async function bootstrap() { 
const app = await NestFactory.create(AppModule); // app은 INestApplication 타입입니다.
app.use(/* 미들웨어 */);
app.enableCors(); 

await app.listen(3000); 

} bootstrap();

 

 

- Interceptor 

    - ClassSerializerInterceptor