API
파일 이름으로 HTTP method와 URL을 선언합니다.
API 라우팅
- server/api/hello.ts → GET /api/hello
- server/api/notes.get.ts → GET /api/notes
- server/api/notes.post.ts → POST /api/notes
- server/api/users/[id].patch.ts → PATCH /api/users/:id
- server/api/files/[...path].get.ts → GET /api/files/*
- method suffix를 생략한 *.ts 파일은 GET으로 처리합니다.
- 파일이 많으면 server/api/admin/users/*.ts처럼 필요한 깊이의 폴더로 정리합니다.
- [[page]]는 생략 가능한 경로가 되며 HEAD와 OPTIONS 파일도 지원합니다.
- default export 함수가 문자열을 반환하면 HTML, 객체를 반환하면 JSON 응답이 됩니다.
- 사용하지 않는 매개변수는 _data처럼 앞에 _를 붙이고 void data로 소비하지 않습니다.
기본 handler
context에는 app, request, params와 요청 추적용 requestId가 들어옵니다. Response를 직접 반환하면 status, header와 streaming body를 그대로 사용할 수 있습니다.
export default async (_input: unknown, context: ApiContext) => ({
id: context.params.id,
requestId: context.requestId,
count: await db.note.count()
});