前面演示瞭如何安裝並運行 json server
, 和使用第三方庫真實化模擬數據 , 下面將展開更多的配置項和數據操做。css
在安裝好json server以後,經過 json-server -h
能夠看到以下配置項:前端
json-server [options] <source> Options: --config, -c 指定 config 文件 [默認: "json-server.json"] --port, -p 設置端口號 [default: 3000] --host, -H 設置主機 [默認: "0.0.0.0"] --watch, -w 監控文件 [boolean] --routes, -r 指定路由文件 --static, -s 設置靜態文件 --read-only, --ro 只容許 GET 請求 [boolean] --no-cors, --nc 禁止跨域資源共享 [boolean] --no-gzip, --ng 禁止GZIP [boolean] --snapshots, -S 設置快照目錄 [默認: "."] --delay, -d 設置反饋延時 (ms) --id, -i 設置數據的id屬性 (e.g. _id) [默認: "id"] --quiet, -q 不輸出日誌信息 [boolean] --help, -h 顯示幫助信息 [boolean] --version, -v 顯示版本號 [boolean] Examples: bin db.json bin file.js bin http://example.com/db.json
既能夠經過命令行方式單行配置,如node
json-server db.js -p 3003 -d 500 -q -r ./routes.json
,也能夠經過 json-server.json
文件進行配置後:git
# /mock/json-server.json { "host": "0.0.0.0", "port": "3003", "watch": false, "delay": 500, "quiet": true, "routes": "./routes.json" }
運行github
json-server db.js
在 /mock
下創建 public
目錄,便可直接訪問其下的全部靜態文件,包括但不限於js
, css
,markdown
文件等。web
地址欄輸入 http://localhist:3003/readme.md
便可訪問如下文件正則表達式
# /mock/public/readme.md # hello Mr DJ,這節奏不要停
經過 json server
創建的rest api服務默承認以在局域網中經過WIFI訪問接口。
windows下面經過 ipconfig
查找到電腦的局域網地址.mac設備是經過 ifconfig | grep "inet " | grep -v 127.0.0.1
查看。
好比個人電腦局域網ip是 192.168.0.6
,在手機上訪問 http://192.168.0.6:3003
便可。npm
能夠經過自定義路由的形式,簡化數據結構,或是創建高彈性的web api,例如json
# /mock/routes.json { "/news/:id/show": "/news/:id", "/topics/:id/show": "/news/:id", }
訪問 /news/1/show
和 topics/1/show
均返回指定的 /news/1
內容。windows
* 須要注意的是,路由必須以 /
開頭
相比在終端中直接輸入各類命令,我更喜歡利用 node scripts
來處理任務,在 /mock
下創建文件 package.json
,而後運行 npm run mock
。
# /mock/package.json { "scripts": { "mock": "json-server db.js" } }
數據過濾是 json server
中很是強力的功能。經過url上簡單的query字段,便可過濾出各類各樣的數據。
示例數據源:
[ { "id": 0, "title": "元小總小把清保住影辦歷戰資和總由", "desc": "共先定製向向圓適者定書她規置鬥平相。要廣確但教金更前三響角面等以白。眼查何參提適", "tag": "值集空", "views": 3810, "images": [ "http://dummyimage.com/200x100/79f2a5&text=別角置", "http://dummyimage.com/200x100/f28279&text=收面幾容受取", "http://dummyimage.com/200x100/7993f2&text=作件" ] }, { "id": 1, "title": "物器許條對越復術", "desc": "方江周是府整頭書生權部部條。始克識史但給又約同段十子按者感律備。關長廠平難山從合", "tag": "分七眼術保", "views": 4673, "images": [ "http://dummyimage.com/200x100/79f2a5&text=別角置" ] }, { "id": 2, "title": "但學卻連質法計性想般最", "desc": "以羣親它天即資幾行位具回同務度。場養驗快但部光天火金時內我。任提教毛辦結論感看還", "tag": "響六", "views": 4131, "images": [ "http://dummyimage.com/200x100/79f2a5&text=別角置", "http://dummyimage.com/200x100/f28279&text=收面幾容受取", "http://dummyimage.com/200x100/7993f2&text=作件" ] }, ... { "id": 99, "title": "則羣起然線部其深我位價業紅候院", "desc": "爲高值務須西生型住斷況裏聽。志置開用她你然始查她響元還。照員給門次府此據它後支越", "tag": "何你", "views": 2952, "images": [ "http://dummyimage.com/200x100/79f2a5&text=別角置" ] } ]
使用 .
操做對象屬性值
// 獲取圖片數量爲3,且標籤字數爲2的新聞 GET /news?images.length=3&tag.length=2
使用 _start
和 _end
或者 _limit
(response中會包含 X-Total-Count
)
// 獲取id=10開始的5篇新聞 GET /news?_start=10&_limit=5 // 獲取id=20開始,id=35結束的新聞 GET /news?_start=20&_end=35
使用 _sort
和 _order
(默認使用升序(ASC))
// 按照瀏覽數量降序排列 GET /news?_sort=views&_order=DESC
使用 _gte
或 _lte
選取一個範圍
// 選取瀏覽量在2000-2500之間的新聞 GET /news?views_gte=2000&views_lte=2500
使用 _ne
排除一個值
// 選擇tag屬性不是 "國際新聞" 的分類 GET /news?tag_ne=國際新聞
使用 _like
進行模糊查找 (支持正則表達式)
// 查找title中含有 "前端" 字樣的新聞 GET /news?title_like=前端
使用 q
,在對象所有value中遍歷查找包含指定值的數據
// 查找新聞所有字段包含 "強拆" 字樣的數據 GET /news?q=強拆
獲取包含下級資源的數據, 使用 _embed
GET /news?_embed=comments GET /news/1?_embed=comments
獲取包含上級資源的數據, 使用 _expand
GET /news?_expand=post GET /news/1?_expand=post
除了獨立做爲rest api 服務器以外, json server
一樣能夠做爲諸如 Express
之類框架的中間件使用,具體API詳見 json server模塊
json-server源碼 : json-server
mockjs源碼 : mockjs
demo : 示例代碼
全文完