💡 본 포스팅은 Pages Router 기준으로 작성되었습니다.
예를 들어, /api/short-links로 들어오는 request를 처리하고 싶다면,
/pages/api/short-links.js 또는 /pages/api/short-links/index.js 경로로 파일을 만든 후,
아래와 같이 함수를 default export 하면 된다.
| 프로퍼티 | 타입 | 설명 |
|---|---|---|
method | 문자열 | request로 들어온 HTTP method 값 |
query | 객체 | query string이나 Next.js에서 사용하는 Params 값이 들어있는 객체 |
body | 자유로움 | request의 body 값 |
cookie | 객체 | request의 cookie가 key/value로 들어있는 객체 |
함수 체이닝 방식으로 사용하기 때문에, res.status(201).send()처럼, 함수를 이어서 사용할 수 있다.
| 프로퍼티 | 타입 | 설명 |
|---|---|---|
status() | 함수 | response로 보낼 HTTP 상태 코드를 지정 |
send() | 함수 | response로 보낼 body를 전달 |
export default function handler(req, res) {
switch (req.method) {
case "GET":
res.send([
{
id: "abc",
title: "위키피디아 Next.js",
url: "https://en.wikipedia.org/wiki/Next.js",
},
{
id: "def",
title: "코드잇 자유게시판",
url: "https://codeit.kr/community/general",
},
{
id: "ghi",
title: "코드잇 질문답변",
url: "https://www.codeit.kr/community/questions",
},
]);
break;
case "POST":
res.status(201).send(req.body);
break;
default:
res.status(404).send();
}
}
export default async function handler(req, res) {
const { id } = req.query;
switch (req.method) {
case "GET":
res.send(id);
break;
case "PATCH":
res.send({
...req.body,
id,
});
break;
case "DELETE":
res.status(204).send();
break;
default:
res.status(404).send();
break;
}
}