beeimp
BeeImp
beeimp
전체 방문자
오늘
어제
  • 분류 전체보기 (110)
    • Program_Language (17)
      • Python (13)
      • Go (0)
      • JavaScript (4)
      • TypeScript (0)
      • Rust (0)
      • Solidity (0)
    • OS (8)
      • UNIX&LINUX (7)
      • Windows (0)
      • MacOS (1)
    • Front-End (19)
      • Svelte (19)
      • React (0)
    • Blockchain (6)
      • Bitcoin (0)
      • Ethereum (1)
      • Klaytn (0)
      • Project (5)
    • Data Structure&Algorithm (11)
      • Greedy (7)
      • Dynamic Programming (1)
      • Sort (0)
      • DFS & BFS (2)
      • Recursive (1)
    • Security (0)
      • SDP (0)
      • Authentication (0)
    • Network (3)
      • OpenWrt (0)
      • SDN&NFV (1)
    • Git (5)
    • IT_News (0)
    • 베타 학습단 (12)
      • SQL (12)
    • Project (1)
    • Issues (1)
    • Reviews (3)
    • I Learned (23)
      • TIL (23)
      • WIL (0)
    • Other (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Ethereum
  • github
  • greedy
  • Docker
  • 블록체인
  • jenkins
  • Git
  • ubuntu
  • solidity
  • typescript
  • mysql
  • svelte
  • sql
  • blockchain
  • react
  • javascript
  • 기초
  • PYTHON
  • Nest.js
  • 탐욕법

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
beeimp

BeeImp

I Learned/TIL

[TIL] Nest.js 컨트롤러 부분 학습

2022. 7. 6. 23:45

[TIL] Nest.js 컨트롤러 부분 학습

날짜

  • 2022.07.06.

목표

  • Nest.js 학습

내용

Nest.js - Controller

  • MVC 패턴에서 Controller에 해당
    • Request로 받은 데이터를 처리하고 결과를 Response하는 인터페이스 역할

Nest.js - Routing

  • 데코레이터 사용
@Get('/hello')
getHello(): string {
  return this.appService.getHello();
}
  • 와일드카드 사용 가능
@Get('he*lo')
getHello(): string {
  return this.appService.getHello();
}

Nest.js - Request/Response Object

import { Request, Response } from 'express';
import { Controller, Get, Req, Res, Param } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get(':id')
  getHello(
        @Param('id') id: string, // Parameter
        @Req() req: Request, 
        @Res() res: Response
    ): string {
    res.send(this.appService.getHello(id));
  }
}

Nest.js - Custom Header

import { Header } from '@nestjs/common';

@Header('Key', 'Value')
@Get()
getHello(): string {
  return this.appService.getHello();
}

// 또는

@Header('Key', 'Value')
@Get()
getHello(
    @Res() res: Response
): string {
    res.header('Key', 'Value');
  res.send(this.appService.getHello());
}

Nest.js - Redirection

  • 클라이언트를 다른 페이지로 이동시키고 싶은 경우 사용
  • HTTP code - 301, 307, 308
    • 아니면 제대로 동작 안할 수 있음
@Get('redirect/docs')
@Redirect('https://docs.nestjs.com', 302)
getDocs(@Query('version') version) {
  if (version && version === '5') {
    return { url: 'https://docs.nestjs.com/v5/' };
  }
}

Nest.js - Sub-Domain Routing

  • 하위 도메인 설정

      @Controller({ host: 'api.beeimp.com' }) // 하위 도메인 요청 처리 설정
      export class ApiController {
        @Get() // 같은 루트 경로
        index(): string {
          return 'BeeImp API'; // 다른 응답
        }
      }

Nest.js - Payload (@Body)

// DTO(Data Transfer Object) 정의
export class CreateUserDto {
  name: string;
  email: string;
}

@Post()
create(@Body() createUserDto: CreateUserDto) {
  const { name, email } = createUserDto;

  return `유저를 생성 - 이름: ${name}, 이메일: ${email}`;
}

결론

  • Nest.js 조금만 더 공부하면 편하게 API를 구축할 수 있을 것 같다는 생각이 들었습니다.

'I Learned > TIL' 카테고리의 다른 글

[TIL] Klip, EIP-5114  (0) 2022.07.10
[TIL] Nest.js 프로바이더와, React-Native 안드로이드 설정  (0) 2022.07.08
[TIL] Nest.js Decoration  (0) 2022.07.05
[TIL] Github Actions 기초  (0) 2022.07.03
[TIL] 무한 스크롤  (0) 2022.07.03
    'I Learned/TIL' 카테고리의 다른 글
    • [TIL] Klip, EIP-5114
    • [TIL] Nest.js 프로바이더와, React-Native 안드로이드 설정
    • [TIL] Nest.js Decoration
    • [TIL] Github Actions 기초

    티스토리툴바