app
디렉터리 아래에서 서버 측 로직을 처리하는 엔드포인트를 정의할 수 있다.라우트 핸들러는 특정 경로의 route.ts
또는 route.js
파일로 정의된다.
예시: /app/api/hello/route.ts
import { NextResponse } from 'next/server';
export async function GET(request: Request) {
return NextResponse.json({ message: 'Hello, World!' });
}
GET
, POST
, PUT
, DELETE
등 HTTP 메서드에 따라 다른 핸들러를 정의할 수 있다.NextResponse
를 사용해 JSON 응답을 반환한다.Middleware
를 통해 요청을 전처리하거나 인증을 할 수 있다.Edge Runtime
을 사용할 수 있어 응답 속도가 빠르다.특징 | 라우트 핸들러(Route Handlers) | 서버 액션(Server Actions) |
---|---|---|
사용 목적 | API 엔드포인트 생성 | 서버 측 함수 호출 |
동작 위치 | 주로 API 라우트에서 사용 | 컴포넌트 내에서 직접 사용 |
데이터 반환 | JSON 응답 반환 | 함수 결과 반환 |
호출 방식 | HTTP 요청 | 직접 함수 호출 |
try-catch
로 예상치 못한 오류를 방지한다.NextResponse
의 status
옵션을 사용해 명확한 상태 코드를 반환한다.예시:
export async function GET(request: Request) {
try {
const data = { key: 'value' };
return NextResponse.json(data, { status: 200 });
} catch (error) {
return NextResponse.json({ error: 'Something went wrong' }, { status: 500 });
}
}