JSON Server는 가볍고 사용하기 쉬운 도구로, 빠르게 가짜 REST API를 만들 수 있습니다. 프로토타이핑, 테스트 및 모의 개발에 특히 유용합니다. JSON Server를 사용하면 최소한의 노력과 시간으로 완전한 가짜 REST API를 로컬에서 실행할 수 있어, 백엔드가 없는 프론트엔드 개발자들에게 매우 유용합니다.
JSON Server를 설치하려면 Node.js와 npm(Node Package Manager)이 필요합니다. Node.js와 npm을 설치한 후, 다음 명령어를 사용하여 JSON Server를 글로벌로 설치할 수 있습니다:
yarn add -g json-server
db.json
파일을 다음과 같이 생성합니다:{
"posts": [
{ "id": 1, "title": "Hello World", "author": "John Doe" },
{ "id": 2, "title": "JSON Server is awesome", "author": "Jane Doe" }
],
"comments": [
{ "id": 1, "body": "Great post!", "postId": 1 },
{ "id": 2, "body": "Very informative.", "postId": 2 }
],
"profile": { "name": "John Doe" }
}
db.json
파일이 있는 디렉토리로 이동하여 다음 명령어를 실행합니다:json-server --watch db.json
기본적으로 JSON Server는 http://localhost:3000
에서 서버를 시작합니다. 이제 이 URL에서 가짜 API에 접근할 수 있습니다.
JSON Server는 db.json
예제에서 다음과 같은 엔드포인트를 자동으로 생성합니다:
/posts
/comments
/profile
이 엔드포인트에서 표준 CRUD 작업을 수행할 수 있습니다:
/posts
: 모든 게시글 조회/posts/1
: ID로 단일 게시글 조회/posts
: 새 게시글 생성/posts/1
: ID로 게시글 업데이트/posts/1
: ID로 게시글 부분 업데이트/posts/1
: ID로 게시글 삭제쿼리 매개변수를 사용하여 결과를 필터링하고 정렬할 수 있습니다:
/posts?author=John Doe
/posts?_page=1&_limit=10
/posts?_sort=title&_order=asc
/posts?q=Hello
커스텀 기능을 추가하려면 미들웨어를 사용할 수 있습니다. server.js
파일을 생성하고 미들웨어 로직을 추가합니다:
const jsonServer = require('json-server')
const server = jsonServer.create()
const router = jsonServer.router('db.json')
const middlewares = jsonServer.defaults()
server.use(middlewares)
server.use((req, res, next) => {
if (req.method === 'POST') {
req.body.createdAt = Date.now()
}
next()
})
server.use(router)
server.listen(3000, () => {
console.log('JSON Server is running')
})
커스텀 서버를 실행하려면 다음 명령어를 사용합니다:
node server.js
routes.json
파일에서 커스텀 라우트를 정의할 수도 있습니다:
{
"/api/": "/",
"/blog/:resource/:id/show": "/:resource/:id"
}
커스텀 라우트와 함께 서버를 시작하려면 다음 명령어를 사용합니다:
json-server --watch db.json --routes routes.json
JSON Server는 애플리케이션을 위한 빠르고 간단한 백엔드가 필요한 개발자에게 강력한 도구입니다. 사용의 용이성, 유연성, 표준 RESTful 작업 지원 덕분에 프로토타이핑 및 테스트에 이상적입니다. 개발을 위한 모의 API가 필요하거나 실제 API가 준비될 때까지 임시로 사용할 백엔드가 필요할 때, JSON Server는 최소한의 설정과 구성으로 강력한 솔루션을 제공합니다.