json-server的關係圖譜詳解(Relationships)

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文件中postscomments是有關聯的,他們的關係經過的就是commentspostId屬性,postId對應的就是postsid
好比commentspostId: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
上面這個路徑獲取的就是commentsid爲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
上面這個路徑就是獲取postsid:2所關聯的comments數據:
返回結果:post

[
  {
    "id": 1,
    "body": "some comment1111",
    "postId": 2
  }
]
相關文章
相關標籤/搜索