back-end server API를 제공하기 전, prototype을 미리 user에게 제공하거나 또는 테스트를 위해 mock server 가 필요할 때 json-server를 이용하면 쉽게 개발이 가능하다. REST API 에 대한 Mock server 개발이 가능하다는 제약이 있다. 초간단 mock server 개발이 아닌 다양한 에러케이스와 validation 기능을 추가하기 위해서는 추가로 middleware, module 등을 개발하여 추가할 수 있다.
데이터 생성 스크립트를 실행하여 db.json 파일을 업데이트 하자
다시 json-server 를 실행하여 조회하면 많은 데이터들이 입력되어 있는 것을 확인할 수 있다.
출처) Yun Trio
초간단 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/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" |
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)); |
$ node fake-data-generator.js > db.json |