글

라벨이 바디인 게시물 표시

NestJS Swagger 문서의 Body Element중 배열 타입 적용하기

이미지
해당 글을 사용하기 전에 참고하면 좋은 글 nest js - install & Create Project from Linux or Ubuntu NestJS에 Swagger(스웨거) Document(문서)를 적용 NestJS http로 들어오는 파라메타, 쿼리, Body값들에 대해서 Global Validation Pipe 만들기   Swagger를 이용해서 API문서를 만들다 보면 단일 Class를 한꺼번에 생성하기 위해서 배열로 받아야 하는 상황이 있습니다. 이를 위해서 기존 Class를 배열로 적용하다보면 Swagger에서 다르게 표시되는 경우가 있습니다. 사진1) 한개의 DTO사용 위의 2개의 num, str을 배열 {num : number, str : string}[]로 저장할수 있는 API를 만들도록 하겠습니다. import {   Body,   Controller,   Get,   HttpCode,   HttpStatus,   Post, } from '@nestjs/common'; import { ApiOkResponse, ApiOperation } from '@nestjs/swagger'; import { AppService } from './app.service'; import { CreateManyTest1ArrayDto, CreateOneTest1Dto } from './dto/test1.dto'; @Controller() export class AppController {   constructor(private readonly appService: AppService) {}   @Get()   getHello(): string {     return this.appService.getHello();   }   @Post('element/one')   @ApiOperation({   ...

Nest JS 바디(body)값 읽기

이미지
  // body값을 읽기 위하여 Post요청을 만든다. @ Post () // create에서 Body를 받을수 있도록 코딩한다. create (@ Body () body ) { // 클라이언트에서 받은 body를 확인하기 위해서 // 다시 클라이언트로 응답한다. return body ; } 해당 컨트롤러(위 코드는 coffee컨트롤러에 있음)에 위 코드를 작성한다. 위 코드를 입력하고 Insomnia에서 POST요청을 할때 위 사진과 같이 Body로 보낸 요쳥을 서버에서 다시 응답으로 오는것을 알수 있습니다.  // body값을 읽기 위하여 Post요청을 만든다. @ Post () create ( @ Body ( 'name' ) name : string , // body의 name만 따로 name변수에 저장 @ Body ( 'message' ) message : string // body의 message만 따로 message변수에 저장 ) { // create에서 Body를 받을수 있도록 코딩한다. console . log ( "request from client(POST)" ) // 클라이언트에서 받은 body를 확인하기 위해서 // 다시 클라이언트로 응답한다. return ( `당신의 이름은 ${ name } 이고 보낸 메세지는 ' ${ message } ' 입니다.` ); } 만약 해당 body에 무엇이 들어올지 알면 미리 변수로 지정을 할수 있습니다. 여기서는 name, message를 body에서 받아서 변수로 지정을 합니다. 그리고 응답을 보낼때 하나의 문자열로 클라이언트로 보냅니다.