라우트 핸들러는 Web Request 및 Response API를 사용하여 주어진 라우트에 대한 커스텀 요청 핸들러를 생성할 수 있도록 한다.

image.png

라우트 핸들러는 app 디렉터리 내에서만 사용할 수 있다. 이는 pages 디렉터리 내의 API 라우트와 동일한 역할을 하므로, API 라우트와 라우트 핸들러를 함께 사용할 필요는 없다.


1. 컨벤션 (Convention)

라우트 핸들러는 app 디렉터리 내의 route.js|ts 파일에 정의된다.

라우트 핸들러는 page.jslayout.js 와 유사하게 app 디렉터리 내 어디든 중첩될 수 있다.

그러나 page.js 와 동일한 라우트 세그먼트 레벨에는 route.js 파일이 존재할 수 없다.


2. 지원되는 HTTP 메서드 (Supported HTTP Methods)

다음 HTTP 메서드가 지원된다: GET, POST, PUT, PATCH, DELETE, HEAD, 및 OPTIONS

지원되지 않는 메서드가 호출되면, Next.js는 405 Method Not Allowed 응답을 반환한다.


3. 확장된 NextRequestNextResponse API (Extended NextRequest and NextResponse APIs

네이티브 RequestResponse API를 지원하는 것 외에도, Next.js는 고급 사용 사례를 위한 편리한 헬퍼를 제공하기 위해 이들을 NextRequestNextResponse로 확장한다.


4. 캐싱 (Caching)

라우트 핸들러는 기본적으로 캐시되지 않는다.

하지만 GET 메서드에 대해서는 캐싱을 선택적으로 적용할 수 있다.