[NestJS] Router

Younghwan Cha·2023년 3월 9일
0

Nest.js

목록 보기
14/27

path

nest.js 는 controller 에서 endpoint 들을 정의하게된다.
이때, 생각보다 순서에 관해서 간과하는 부분들이 많이 있는데, 오늘은 이에 대해서 다뤄보려고 한다.

순서

아래를 보자

@Get('/:id')

@Get('/test')

GET /test 요청을 보낼 경우, 순서대로 확인하다가 /:id 에 먼저 걸리기 때문에 /:id 요청으로 처리되게된다.

그렇다면 다음의 경우엔 어떨까?

@Get('/:id')

@Get('/test/this')

해당 구현에 GET /test/this 요청을 보낼 경우 어떻게 될까?
애매하다. test 를 id 로 취급해서 위에 걸릴까? 아니면 그냥 아래에 걸릴까?

이 경우 기본적으로 경로 패턴이 가장 긴 것을 우선시해서 매칭된다.
/:id 는 하나의 경로 세그먼트, /test/this 는 두개의 경로 세그먼트를 갖고있기 때문에 /test/this 에 매칭된다.

Router Module

https://stackoverflow.com/questions/57346320/how-split-routes-by-controllers-in-nestjs-router

vs


// src/routes.ts

import { Routes } from 'nest-router';
import { CatsModule } from './cats/cats.module';
import { DogsModule } from './dogs/dogs.module';
import { NinjaModule } from './ninja/ninja.module';
export const routes: Routes = [
  {
    path: '/ninja',
    module: NinjaModule,
    children: [{ path: '/cats', module: CatsModule }, { path: '/dogs', module: DogsModule }],
  },
];

[nest project example] https://github.com/nestjsx/nest-router/blob/master/examples/nest-v5x/src/routes.ts

profile
개발 기록

0개의 댓글