개발을 하다 보면 백엔드 API가 완전히 구현되기 전 프론트엔드에서 데이터를 미리 테스트하거나 UI 구현을 병렬로 진행해야 하는 경우가 종종 있다.
이럴 때 유용하게 사용할 수 있는 도구가 바로 json-server이다. JSON 파일 하나만으로도 REST API 형태의 서버를 즉시 실행할 수 있기 때문에, 빠른 프로토타이핑이나 API 인터페이스 테스트에 매우 적합하다.
설치 및 실행 방법
npm install -g json-server
설치 후 API로 사용할 JSON 파일을 준비한다.
아래와 같이 db.json
파일을 프로젝트 루트에 생성한다.
{
"users": [
{
"id": 1,
"name": "이순신",
"age": 34,
"address": "서울"
},
{
"id": 2,
"name": "홍길동",
"age": 28,
"address": "부산"
},
{
"id": 3,
"name": "강감찬",
"age": 45,
"address": "대구"
}
]
}
아래 명령어로 서버를 실행할 수 있다.
json-server --watch db.json
기본적으로는 http://localhost:3000에서 서버가 실행되며, 옵션으로 포트나 호스트를 지정할 수도 있다.
json-server --watch db.json -H 192.168.0.100 -p 8080
기능 사용
검색
검색 기능은 q
쿼리 파라미터를 통해 제공되며, 해당 단어가 포함된 모든 필드에서 검색이 수행된다. 예를 들어 아래 요청은 “Discovery
”라는 단어가 포함된 항목을 검색한다.
curl -X GET "http://localhost:3000/users?q=홍길동"
name
, address
등의 필드 중에 “홍길동
”이 포함된 데이터를 찾아준다.
필터링
특정 필드를 기준으로 데이터를 필터링하고자 할 경우, 해당 필드명을 쿼리로 넘기면 된다.
예를 들어 주소가 “부산
”인 사용자만 조회하려면 아래와 같이 요청한다.
curl -X GET "http://localhost:3000/users?address=부산"
필요하다면 다중 필터도 가능하다.
curl -X GET "http://localhost:3000/users?age=28&address=부산"
페이지네이션
json-server는 _page
파라미터를 통해 간단히 페이지네이션을 제공한다. 예를 들어 2
페이지의 데이터를 가져오려면 다음과 같이 요청한다.
curl -X GET "http://localhost:3000/users?_page=2"
기본적으로는 한 페이지당 10개의 결과가 반환되며, _limit
파라미터를 함께 사용하면 페이지당 출력 건수를 조정할 수 있다.
curl -X GET "http://localhost:3000/users?_page=1&_limit=2"
정렬
정렬은 sort
와 order
를 조합하여 사용할 수 있다.
예를 들어 나이를 기준으로 내림차순 정렬하려면 다음과 같이 요청한다.
curl -X GET "http://localhost:3000/users?_sort=age&_order=desc"
오름차순으로 정렬하고자 한다면 _order=asc
로 설정하면 된다.
오퍼레이터를 이용한 조건 검색
오퍼레이터 | 의미 |
_gt | 초과 (greater than) |
_lt | 미만 (less than) |
_gte | 이상 (greater than or equal) |
_lte | 이하 (less than or equal) |
_ne | 같지 않음 (not equal) |
예를 들어 나이가 30세 이상인 사용자를 조회하려면 다음과 같이 요청할 수 있다.
curl -X GET "http://localhost:3000/users?age_gte=30"
나이가 30세 이하인 사용자를 조회할 수도 있다.
curl -X GET "http://localhost:3000/users?age_lte=30"