2011-09-18 182 views
3

因此,我有一個REST API,其中有一個資源,其中的其他資源鏈接到(相關模型,從編程的角度)。在REST API中檢索相關數據的最佳實踐

因此,我現在正在做的事情是,無論何時我請求資源,相關資源都通過URL('/ related_data/related_data_id /')引用。

但是,我擔心,假設有5個相關資源給我正在檢索的資源,我會執行5個GET請求。我正在寫一個iPhone客戶端,我想知道如果這是如何正確使用REST(即我返回的URL)做到這一點。樣本JSON迴應是這樣的:

{ 
"meta": { 
      "limit": 20, 
      "next": null, 
      "offset": 0, 
      "previous": null, 
      "total_count": 2 
     }, 
"objects": [ 
    { 
     "away_team": "/api/team/3/", 
     "country": "/api/country/1/", 
     "event_date": "2011-08-16", 
     "event_time": "06:00:00", 
     "event_timezone": "GMT", 
     "home_team": "/api/team/4/", 
     "id": "1", 
     "level": "/api/level/4/", 
     "resource_uri": "/api/event/1/", 
     "tournament": "/api/tournament/1/" 
    }, 
    { 
     "away_team": "/api/team/4/", 
     "country": "/api/country/1/", 
     "event_date": "2011-09-29", 
     "event_time": "12:00:00", 
     "event_timezone": "UTC", 
     "home_team": "/api/team/3/", 
     "id": "2", 
     "level": "/api/level/1/", 
     "resource_uri": "/api/event/2/", 
     "tournament": "/api/tournament/6/" 
    } 
] 
} 

這是REST做這件事的正確方法,考慮到「每個URI必須映射到資源」,所有這些東西?

我使用Django和Django的tastypie

提前感謝!

回答

2

是;如果相關資源獨立更新,這是正確的。 REST體系結構依賴於緩存來提高性能,因此最適合用作原子實體的資源(請參閱more here)。這樣,您可以更新資源B並使其表示更新,而無需更新資源A.有關更多設計細節,請參閱this SO comment