본문 바로가기

Node.js

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

{

    "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 를 실행하여 조회하면 많은 데이터들이 입력되어 있는 것을 확인할 수 있다.