Nest.js 01

kyc1996·2022년 7월 7일
0

Nest.js

목록 보기
1/1

package.json

  • 애플리케이션이 필요로 하는 패키지 목록을 나열한다.
  • 각 패키지는 시맨틱 버저닝 규칙으로 필요한 버전을 기술한다.
  • 다른 개발자와 같은 빌드환경을 구성할 수 있다. 의존성이달라 발생하는 문제를 예방한다.

package-lock.json

package.json에 선언된 패키지들이 설치될 때의 정확한 버전과 서로간의 의존성을 표현한다.

팀원들간에 정확한 개발 환경을 공유할 수 있다.

만약 소스코드 내에 package-lock.json 파일이 이미 존재한다면, 

`npm install` 명령을 수행할 때 이 파일을 기준으로 패키지들을 설치하게 된다.

Controller

컨트롤러는 들어오는 요청을 받고 처리된 결과를 응답으로 돌려주는 인터페이스 역할을 한다.

라우팅

  • app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

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

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}

서버가 수행해야하는 많은 귀찮은 작업을 데코레이터로 기술하여, 어플리케이션이 가지는 핵심 로직에 집중할 수 있도록 도와준다.

@Controller 데코레이터를 클래스에 선언하는 것으로 해당 클래스는 컨트롤러의 역할을 하게 된다.

와일드 카드 사용

라우팅 패스는 와일드 카드를 이용하여 작성할 수 있다.

-> @Get('he*lo') : he 와 lo 사이에 어떤 문자가 와도 상관없이 라우팅 패스를 구성한다.

정규 표현식에서의 와일드 카드와 동일하게 동작한다.

(단, 하이픈(-)과 점(.)은 문자열로 취급한다.

Request Object

클라이언트는 어떤 요청을 보내면서 종종 서버가 원하는 정보를 함께 전송한다.

Nest는 요청과 함께 전달되는 데이터를 컨트롤러가 다룰 수 있는 객체로 변환한다.

이렇게 변환된 객체는 @Req() 데코레이터를 이용하여 다룰 수 있다.

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

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

  @Get()
  getHello(@Req() req: Request): string {
    console.log(req);
    return this.appService.getHello();
  }
}

요청 객체는 HTTP 요청을 나타낸다.

Nest는 @Query(), @Param(key?: string), @Body 데코레이터를 이용해서 요청에 포함된 쿼리 파라미터, 패스 파라미터, 본문을 쉽게 받을 수 있도록 해준다.

Redirection

종종 서버는 요청을 처리한 후 요청을 보낸 클라이언트를 다른 페이지로 이동시키고 싶은 경우가 있다.

응답 본문에 redirectUrl을 포함시켜 클라이언트가 스스로 페이지를 이동해도 되지만,

@Redirect 데코레이터를 사용하면 쉽게 구현이 가능하다.

데코레이터의 두번째 인자는 상태코드이다.

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

@Redirect('https://nestjs.com', 301)
@Get(':id')
findOne(@Param('id') id: string) {
  return this.usersService.findOne(+id);
}
profile
4학년 취준생

0개의 댓글