본문 바로가기

[s]IT 팁

json-server를 이용한 초간단 Mock REST API 서버 만들기

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 파일 생성

1
2
3
4
5
6
7
8
9
10
11
{
    "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 하도록 실행한다.
1
2
json-server --watch db.json  // 별도로 포트를 지정하지 않으면 3000번 포트로 서버가 오픈된다.
json-server --watch db.json --port 3003 

4 Test

curl 을 이용하여 테스트를 해 본다
curl -X GET "http://localhost:3000/cats?age_gte=5" // age 가 5보다 크거나 같은 resource 조회

5 테스트 데이터 생성

faker.js를 이용하여 테스트 데이터를 다량으로 생성해 보도록 하겠다. faker.js 를 이용하면 다양한 형태의 데이터를 무작위로 생성할 수 있다. 예를 들어 카드정보나 전화번호, 이메일, 이름, 주소 등등의 테스트용 데이터를 손쉽게 생성할 수 있다.

5.1 faker 설치

npm install faker

5.2 테스트 데이터 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 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 를 실행하여 조회하면 많은 데이터들이 입력되어 있는 것을 확인할 수 있다. 출처) Yun Trio