본문 바로가기

Research/Nest.js32

nestjs_repository 추가하기 현재 Controller, Service 두 레이어만 있는 상황인데, 리파지토리 레이어를 추가하여 DB 관련 작업을 추상화시켜주자. 추후 여분의 DB를 연결하거나 또 다른 모듈에서 해당 모듈의 DB 관련 로직을 수행해야할 경우 편리하다. 왜냐하면 기능이 추상화되어있기에 메소드만 사용하면 되기 때문이다. Module에 리파지토리 레이어 프로바이더 등록 당연하지만 Repository 레이어를 사용하려면 Module에도 등록을 먼저 해야한다. 그냥 모듈은 동사무소 같은 곳이다. 리파지토리는 공급되는 Provider 역할을 하기에 providers 프로퍼티에 추가해준다. // cats.module import { Module } from '@nestjs/common'; import { CatsController.. 2023. 4. 6.
nestjs_CORS 허용하기 아키텍처가 프론트 리액트 페이지 - 백엔드 nest.js 이렇게 구분되어있는 시나리오다. 프론트에서 API 요청 시 axios로 post요청을 한다. 이때 CORS 문제가 종종 발생하는데, 이를 해결하는 방법을 알아보자. 공식문서에 따르면 CORS는 Cross-origin resource sharing의 약자로 다른 도메인에서 리소스를 요청할 때 이를 허용해주는 메커니즘을 말한다. https://docs.nestjs.com/security/cors // main.ts ... async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalPipes(new ValidationPipe()); app.useGlo.. 2023. 4. 5.
nestjs_swagger 적용 및 dto OOP적 리팩토링 Swagger 모듈 설치 $ npm install --save @nestjs/swagger swagger 모듈 설치(https://docs.nestjs.com/openapi/introduction) 과거에는 express, fastify로 구분된 것으로 보인다. 현재는 위의 명령어 한방이면 설치가 가능하다. Swagger 생성 코드 // main.ts import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { HttpExceptionFilter } from './common/exceptions/http-exception.filter'; import { ValidationPipe } from '@.. 2023. 4. 5.
nestjs_signup api 구현 + virtual 필드로 민감정보는 숨기기 signup api를 구현하고 virtual 필드로 민감 정보를 가리는 조치를 취해보자. Controller 레이어 // cats.controller.ts ... @Controller('cats') @UseInterceptors(SuccessInterceptor) @UseFilters(HttpExceptionFilter) export class CatsController { // catsService 종속성 주입 constructor(private readonly catsService: CatsService) {} @Get() getCurrentCat() { return 'current cat'; } @Post() async signUp(@Body() body: CatRequestDto) { return.. 2023. 4. 5.