Next.js는 API Routes
라는 기능을 제공하여, 클라이언트(브라우저)에서 요청을 받아 데이터를 처리하는 간단한 API 서버를 구축할 수 있다. 이번 포스트에서는 Next.js에서 API Routes를 설정하고 사용하는 방법에 대해 알아보자.
API Routes는 Next.js에서 API 서버를 간단하게 만들 수 있도록 도와주는 기능이다. 이를 사용하면 백엔드 API 서버와 유사하게 동작하는 API를 쉽게 구축할 수 있다. 예를 들어, 클라이언트로부터 요청을 받아 데이터베이스에서 데이터를 가져오거나, 외부 API의 데이터를 불러와 클라이언트에 전달할 수 있다.
Next.js 프로젝트를 생성할 때, 기본적으로 src/pages/api
폴더가 생성된다. 이 폴더는 API를 정의하는 파일들을 저장하는 곳으로, 이 안에 배치된 파일들은 모두 API Routes
로 인식된다
예를 들어, src/pages/api/hello.ts
파일을 확인해 보면, 기본적인 API 응답 코드가 작성되어 있다.
import type {NextApiRequest, NextApiResponse} from "next";
type Data = {
message: string;
}
export default function handler(
req: NextApiRequest,
res: NextApiResponse<Data>,
) {
res.status(200).json({ message: 'Hello from Next.js!' });
}
위 코드에서 handler
함수는 API 요청에 대한 응답을 정의하는 함수이다. 두 개의 매개변수 req
와 res
를 받아 요청과 응답을 처리할 수 있다. 여기서 res.status(200).json({ name: 'John Doe' })
는 상태 코드 200
을 반환하며, 응답으로 { name: 'John Doe' }
라는 JSON 데이터를 전달한다.
이 파일은 웹페이지가 아닌 API 경로
로 인식되며, 브라우저에서 localhost:3000/api/hello
로 요청을 보내면 API가 응답하게 된다.
handler
함수는 NextApiRequest
와 NextApiResponse
타입을 사용하여 요청과 응답을 처리한다. 이때 res
객체의 json
메서드를 통해 JSON 형식의 데이터를 응답하며, status
메서드를 사용해 HTTP 상태 코드를 설정할 수 있다.
이 코드는 상태 코드 200(성공)
을 반환하며, 응답으로 { name: 'John Doe' }
객체를 클라이언트에게 전달한다.
Next.js에서는 API Routes를 이용해 간단하게 API를 설정할 수 있다. 먼저 pages/api
폴더 아래에 time.ts
파일을 생성하여 현재 시간을 반환하는 API를 만들어보자.
import type {NextApiRequest, NextApiResponse} from "next";
// Next에서 기본으로 제공하는 자체 타입.
type Data = {
name: string;
}
export default function handler(
req: NextApiRequest,
res: NextApiResponse<Data>,
) {
const date = new Date();
res.json({time: date.toLocaleString()});
}
handler
함수가 실행이 될텐데 이 함수에서는 새로운 Date객체를 만들고, 응답 값으로 이러한 JSON객체를 응답하도록 설정이 되었으니까{
"time": "2023-10-23 14:35:12"
}
응답 객체 안에 time이라는 속성으로 현재 시간이 로컬 형식으로 잘 반환된 것을 확인할 수 있다.
Next.js의 API Routes
는 서버리스 함수
처럼 동작하며, 별도의 백엔드 설정 없이도 API 서버를 간편하게 구축할 수 있는 기능이다. 데이터베이스 연결, 외부 API 호출, 데이터 처리 등 다양한 작업을 클라이언트와 서버 간의 요청-응답 흐름 안에서 처리할 수 있다.
API Routes
는 Next.js에서 백엔드 API 서버처럼 동작하는 간단한 API를 구축할 수 있는 기능.
pages/api
폴더에 파일을 추가하면, 해당 파일은 API 경로로 자동 설정됨.
요청과 응답을 처리하는 함수인 handler
는 Next.js의 NextApiRequest
와 NextApiResponse
를 사용해 동작한다.
서버리스 함수
란, 전통적인 서버 인프라 관리 없이
클라우드 환경에서 동적으로 실행되는 함수를 의미한다. 이러한 함수는 서버리스 아키텍처
의 일부로, 서버를 직접 관리할 필요 없이 특정 요청에 따라 자동으로 함수가 실행
되며, 그 후에 자동으로 종료된다.handler
를 실행하고, 요청을 처리한 후 자동으로 종료된다. 이를 통해 데이터베이스 연결, 외부 API 호출, 데이터 처리 등을 수행할 수 있다. 클라우드 환경(Vercel, AWS 등)에서는 API Routes가 이러한 서버리스 함수로 배포되어, 서버 관리 없이 백엔드 로직을 처리할 수 있게 된다.API Routes 출처,