NestJS는 강력한 CLI (Command-Line Interface)를 지원한다.

CLI 를 통해 API를 만들기 위한 모듈(module, mo), 컨트롤러(controller, co), 서비스(service, s)를 생성해보자


# CLI 통한 생성 방법
$ nest (generate|g) (name|alias) name


import { Controller, Get, Head } from '@nestjs/common';

@Controller('api')
export class ApiController {

    @Head()
    foo() {}

    @Get()
    get(): string {
        return 'hello World!'
    }

}

데코레이터(@)를 선언하여, API의 경로와 메서드를 정의할 수 있다.
* HEAD 메서드를 사용할 때, 동일한 경로의 GET 메서드가 존재한다면, 반드시 HEAD 메서드를 먼저 선언해야 한다
데코레이터는 중요하지만, 함수명은 의미가 없다. (하지만 함수명을 마음대로 짓자는 뜻은 아니다, 클린 코드


Express 모듈 사용하기

import { Controller, Get, Req, Request, Res, Response } from '@nestjs/common';

@Controller('api')
export class ApiController {

    @Get('express1')
    get1(@Request() request, @Response() response) {
        response.status(200).send(`${request.method} ${request.url} ${request.ip}`)
    }

    @Get('express2')
    get2(@Req() req, @Res() res) {
        res.status(200).json({
            method: req.method,
            url: req.url,
            ip: req.ip
        })
    }

}


Query, Param, Body 사용하기

import { Body, Controller, Get, Param, Post, Query } from '@nestjs/common';

@Controller('api')
export class ApiController {

    @Get('param/:id')
    getParam(@Param('id') id) {
        return `id: ${id}`
    }

    @Get('params/:id/:name')
    getParams(@Param('id') id, @Param('name') name) {
        return `id: ${id}, name: ${name}`
    }

    @Get('query')
    getQuery(@Query('id') id) {
        return `id: ${id}`
    }

    @Post('body')
    postBody(@Body() body) {
        return body
    }

}


Put, Patch, Delete, HttpCode, Redirect

import { Body, Controller, Delete, Get, HttpCode, Patch, Put, Redirect } from '@nestjs/common';

@Controller('api')
export class ApiController {

    @Put()
    put(@Body() body) { }

    @Patch()
    patch() { }

    @Delete()
    @HttpCode(204)
    delete() { }

    @Get('redirect')
    @Redirect('https://nestjs.com', 301)
    getRedirect() {}

}

CORS  설정

 

첫번째 방법

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

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  app.enableCors({ origin: "*", methods: "GET" })

  await app.listen(3000);
}
bootstrap();

 

두번째 방법

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

async function bootstrap() {
  const app = await NestFactory.create(AppModule, {
    cors: {
      origin: ["*"]
      , optionsSuccessStatus: 200
      , maxAge: 300
      , credentials: true
    }
  });

  await app.listen(3000);
}
bootstrap();

 


참고 링크

NestJS Documentation - Custom decorators

https://docs.nestjs.com/controllers

 

'JavaScript > NestJS' 카테고리의 다른 글

[NestJS] 환경 변수 (config) 사용하기  (0) 2023.08.20
[NestJS] Logging 하기  (0) 2023.08.19
[NestJS] Jest 테스트하기  (0) 2023.08.17
[NestJS] 경로 alias 설정하기  (0) 2023.08.17
[NestJS] 시작하기  (0) 2023.08.17

+ Recent posts