json-server
的關係圖譜json-server
是很是好用的一款模擬REST API的工具,文檔也很詳細和全面.
詳情:json-server
而其中的關係圖譜是它很是強大的一個功能,能夠很是方便實現多個路由之間關聯數據的獲取。git
官網上對於關係圖譜的案例很是好,我這裏在它示例的基礎上稍以改進,進行說明,首先我這裏編寫了一個原始數據,db.json
:github
{ "posts": [ { "id": 1, "title": "post的第一個title", "author": "typicode" }, { "id": 2, "title": "post的第二個title", "author": "tangcaiye" } ], "comments": [ { "id": 1, "body": "some comment1111", "postId": 2 }, { "id": 2, "body": "some comment2222", "postId": 1 } ], "profile": { "name": "typicode" } }
這裏對這個db.json
數據內容解釋一下:
這個json文件中posts
跟comments
是有關聯的,他們的關係經過的就是comments
下postId
屬性,postId
對應的就是posts
的id
。
好比comments
下postId:2
的對象關聯的就是posts下的{ "id": 2, "title": "post的第二個title", "author": "tangcaiye" }
json
_embed
json-server
中的_embed
就是用來獲取包含下級資源的數據.
好比我json-server
服務器的端口號是8081
,而後個人請求路徑是http://localhost:8081/posts/2?_embed=comments
這個路徑獲取的就是posts下的id爲2的數據和它關聯的comments的數據:{ "id": 1, "body": "some comment1111", "postId": 2 }
輸出結果爲:服務器
{ "id": 2, "title": "post的第二個title", "author": "tangcaiye", "comments": [ { "id": 1, "body": "some comment1111", "postId": 2 } ] }
_expand
若是理解了_embed
那麼_expand
它也就很輕鬆了,_expand
獲取的是包含上級資源的數據:
路徑:http://localhost:8081/comments/2?_expand=post
上面這個路徑獲取的就是comments
下id
爲2的數據和它關聯的上級資源post
,也就是posts
下的:{ "id": 1, "title": "post的第一個title", "author": "typicode" }
輸出結果:工具
{ "id": 2, "body": "some comment2222", "postId": 1, "post": { "id": 1, "title": "post的第一個title", "author": "typicode" } }
有時候咱們可能想只獲取下級資源,能夠經過:
路徑:http://localhost:8081/posts/2/comments
上面這個路徑就是獲取posts
的id:2
所關聯的comments
數據:
返回結果:post
[ { "id": 1, "body": "some comment1111", "postId": 2 } ]