json-server (1) 介紹資料庫設計
基礎說明
json-server 是一個輕量級工具,可以快速建立一個基於 JSON 資料的 RESTful API,常用於開發階段進行前端測試,模擬後端 API 提供資料。以下是如何使用 json-server 與相關功能的介紹:
安裝
1 | npm install json-server |
建立 JSON 資料檔案
創建一個 JSON 檔案(例如:db.json),作為模擬數據的資料庫。例如:
1 | { |
json 檔案建立後,啟動伺服器
1 | json-server --watch db.json |
取得資料
啟動後,json-server 自動生成以下 RESTful API:
- GET /posts:獲取所有文章。
- GET /posts/1:獲取 ID 為 1 的文章。
取得單一資料的關聯資料
- GET /posts/1/comments
上面路徑能取得文章 1 中的所有 comments 資料。
- GET /posts/1/comments?_expand=user
上面路徑能在 comments 資料中帶入 user 資料。
expand 關聯資料
1 | { |
使用 /posts?_expand=author,可以在 posts 資料中,用 author 來尋找外層 authors 資料表,並將author 資料帶入,得到如下資料:
1 | [ |
新增資料
- POST /posts:新增一篇文章
body 帶入
1 | { |
- POST /posts/1/comments: 在 文章1中新增一筆留言
1 | { |
篩選功能
JSON-SERVER 也提供篩選功能,以下資料為例:
1 | { |
透過在路由加上參數的方式可以篩選出對應資料
1 | // 篩選 name 屬性為 A產品的商品 |
多個篩選條件可以用 & 連接
1 | // 篩選 name 屬性為 A產品,且 price 為500的資料 |
物件深層的資料也可以篩選,用點記號指定
1 | // 篩選 language 物件裡,en-us屬性值為 A product 的產品 |
若不確定屬性名稱,也可以用 q 用來執行全文搜尋,會在 JSON 資料中所有的屬性中進行模糊比對。
1 | //。篩選出 關鍵字帶有A產品的資料 |
分頁功能
在使用 json-server 時,內建了分頁功能,可以通過 _page 和 _limit 兩個參數實現分頁效果。
_page:
- 指定顯示的頁碼。
- 預設值為 1。
_limit:
- 指定每頁顯示的資料筆數。
- 預設值為 10。
1 | // 回串第二頁的資料,每頁5筆 |
排序功能
在 json-server 中,可以使用 _sort 和 _order 參數對資料進行排序。這些參數提供了基於指定屬性的升序或降序排列資料的功能。
_sort:
- 指定用於排序的屬性名稱。
- 支援單一屬性或多個屬性(用逗號分隔)。
_order:
- 指定排序方式。
- 可選值:
- asc:升序排列(小到大或字母順序),為預設值。
- desc:降序排列(大到小或字母逆序)。
1 | 將 price 屬性照降序排列方式排序 |