我正在開發一個API,我需要返回資源/實體等。如何表示一個資源的寧靜表示及其相應的集合?
實施例:
GET /articles?limit=20&page=5
取出與20項的範圍集合。
GET /articles/25
取一個獨一無二的標識項。
基本上,我會分別代表這些資源是這樣的:
集合:
[
{
"id": 12,
"title": "foo"
},
{
"id": 25,
"title": "bar"
}
]
一個獨特的項目:
{
"id": 25,
"title": "baz"
}
這聽起來自然。
但是,如果我想包含分頁數據呢?
在收集,我可以這樣做:
{
"collection": [
{
"id": 12,
"title": "foo"
},
{
"id": 25,
"title": "bar"
}
],
"pagination": {
"item_count": 2,
"page": 5,
"limit": 20,
"total": 102
}
}
獨特的項目可以保留原樣,但它看起來有點不一致對我來說,消費者可以怎樣,檢測收集VS的獨特項目?他需要檢查「收集」鍵嗎?
我有這個想法是 「型」 我的結果,是這樣的:
對於單個項目:
{
"type": "item",
"model": "article",
"resultKey": "article",
"article": {
"id": 25,
"title": "baz"
}
}
對於集合:
{
"type": "collection",
"model": "article",
"resultKey": "articles",
"articles": [
{
"id": 12,
"title": "foo"
},
{
"id": 25,
"title": "bar"
}
],
"pagination": {
"item_count": 2,
"page": 5,
"limit": 20,
"total": 102
}
}
我連簡化關鍵的東西,通常使用像collection
和item
。
一些策略建議總是使用集合並返回單個項目,但對我來說聽起來並不自然,我請求一個返回實體的端點,除了僅看到一個集合,即使只有一個項目,我也不會看到集合。
是否有任何規範化的JSON模式來解決這個問題?
我知道這個規範,我很樂意使用它,但由於幾個原因,我不能,其中之一是,鏈接提供導航,但不是總項目數,例如,我的客戶需要能夠顯示總項目數量。 –