[Next.js] API Routing

SoShy·2024년 4월 1일

Next.js

목록 보기
9/9
post-thumbnail

💡 본 포스팅은 Pages Router 기준으로 작성되었습니다.


🏷️ Request handler 함수


예를 들어, /api/short-links로 들어오는 request를 처리하고 싶다면,

/pages/api/short-links.js 또는 /pages/api/short-links/index.js 경로로 파일을 만든 후,

아래와 같이 함수를 default export 하면 된다.



1. Request 객체


프로퍼티타입설명
method문자열request로 들어온 HTTP method 값
query객체query string이나 Next.js에서 사용하는 Params 값이 들어있는 객체
body자유로움request의 body 값
cookie객체request의 cookie가 key/value로 들어있는 객체


2. Response 객체


함수 체이닝 방식으로 사용하기 때문에, res.status(201).send()처럼, 함수를 이어서 사용할 수 있다.

프로퍼티타입설명
status()함수response로 보낼 HTTP 상태 코드를 지정
send()함수response로 보낼 body를 전달


3. 사용 예시


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;
  }
}
profile
프론트엔드 개발자가 되기 위해 노력 중인 새싹🌱 입니다.

0개의 댓글