Route Handlers

김현학·2023년 10월 2일
0

NEXT Routing Concepts

목록 보기
11/11

목표

Next 공식 문서의 내용에 따라
특정 segment에서의 Routing 규칙을 정의할 수 있다.

내용

서론

Route Handler는 주어진 경로에 대해 웹 API에 대한 요청과 응답을 처리하는 custom handler이다. 이 기능은 App Router 방식에서만 지원한다.


본론

Convention

route 파일에 정의한다.

app/api/route.ts

export async function GET(request: Request) {}

이전 포스팅인 Defining-Routes에서도 언급한 적 있지만,
특정 segment에 대한 접근은 다음 두 가지 방식으로 처리한다.

  1. page를 반환하거나
  2. router로 처리하거나

따라서, page와 router는 동일한 수준에서 함께 존재할 수 없다.
둘 중 하나만 존재해야 한다.

Supported HTTP Methods

HTTP Method의 종류는 다양하지만, Next에서 지원하는 Method는 다음과 같다.

GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS

지원하지 않는 Method가 호출되면 405 Method Not Allowed 응답을 반환한다.

Extended NextRequest and NextResponse APIs

native RequestResponse를 상속받아
Next 내부적으로는 NextRequestNextResponse를 사용한다.

Behavior

URL Query Parameters

// Given a request to /home, pathname is /home
request.nextUrl.pathname
// Given a request to /home?name=lee, searchParams is { 'name': 'lee' }
request.nextUrl.searchParams

Request Body FormData

zod-form-data를 활용하여 전달받은 값의 타입과 패턴에 대한 검증을 할 수 있다.

Segment Config Options

파일에서 특정 변수명을 가진 변수를 직접 export하는 것만으로
Route Segment에 대한 설정이 가능하다.
자세한 내용은 링크 참고.

Route Resolution
Caching / Opting out of caching / Revalidating Cached Data

Redirects
Dynamic Route Segments
Dynamic Functions (Cookies / Headers)
CORS

이외에도 위와 같은 내용들이 있으며, 특히 Next에서 chunk Streaming 말고,
지속적인 요청 및 응답 관점에서의 일반적인 Streaming을 다루는 부분은
Vercel의 AI SDK와 관련하여 흥미로운 내용이 많다.

다음 단계

Middleware 기능을 활용하여
외부와의 통신을 중개하는 추상화된 layer로 통신 관리를 일원화한다.

시리즈

Terminology
Defining Routes
Pages and Layouts
Linking and Navigating
Route Groups
Dynamic Routes
Loading UI and Streaming
Error Handling
Parallel Routes
Intercepting Routes
Route Handlers
Middleware
Project Organization
Internationalization

0개의 댓글