back-end server API를 제공하기 전, prototype을 미리 user에게 제공하거나 또는 테스트를 위해 mock server 가 필요할 때 json-server를 이용하면 쉽게 개발이 가능하다. REST API 에 대한 Mock server 개발이 가능하다는 제약이 있다. 초간단 mock server 개발이 아닌 다양한 에러케이스와 validation 기능을 추가하기 위해서는 추가로 middleware, module 등을 개발하여 추가할 수 있다.
[초간단 REST API Mock server 만들기]
json resource 에 접근할 수 있는 CRUD REST API 서버를 만들어 보겠다.
1. json-server 설치하기
npm을 이용하여 json-server를 설치한다.
sudo npm install -g json-server
2. db.json 파일 생성
{
"users": [
{ "id": 1, "name": "James", "age": 14, "address": "seoul" },
{ "id": 2, "name": "Patrick", "age": 12, "address": "Austin" },
{ "id": 3, "name": "Sally", "age": 9, "address": "San Antonio" }
],
"cats": [
{"id": 1, "name": "Rex", "age": 4, "sex": "male"},
{"id": 2, "name": "joey", "age": 10, "sex": "male"}
]
}
3. json-server 실행
json-server 가 우리가 생성한 db.json 파일을 watching 하도록 실행한다.
json-server --watch db.json
json-server --watch db.json --port 3003
별도로 포트를 지정하지 않으면 3000번 포트로 서버가 오픈된다.
4. Test
curl 을 이용하여 테스트를 해 본다
curl -X GET "http://localhost:3000/users"
curl -X GET "http://localhost:3000/users/1"
curl -X GET "http://localhost:3000/users?name=Sally"
curl -X GET "http://localhost:3000/cats"
curl -X GET "http://localhost:3000/cats/1"
curl -X GET "http://localhost:3000/cats?age_gte=5" // age 가 5보다 크거나 같은 resource 조회
5. 테스트 데이터 생성
faker.js를 이용하여 테스트 데이터를 다량으로 생성해 보도록 하겠다.
5.1 faker 설치
npm install faker
5.2 테스트 데이터 생성
// file name : fake-data-generator.js
var faker = require('faker');
var db = { users: [], cats: [] };
for (var i=0; i < 1000; i++) {
db.users.push({
id: i,
name: faker.name.findName(),
age: Math.floor(Math.random()*10+1),
address: faker.address.city()
});
db.cats.push({
id: i,
name: faker.name.firstName(),
age: Math.floor(Math.random()*10+1)
});
}
console.log(JSON.stringify(db));
데이터 생성 스크립트를 실행하여 db.json 파일을 업데이트 하자
$ node fake-data-generator.js > db.json
다시 json-server 를 실행하여 조회하면 많은 데이터들이 입력되어 있는 것을 확인할 수 있다.