【问题标题】:Best Practices in Retrieving Related Data in a REST API在 REST API 中检索相关数据的最佳实践
【发布时间】:2011-11-19 15:06:11
【问题描述】:

所以我有一个 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/"
    }
]
}

考虑到“每个 URI 必须映射到一个资源”以及所有这些事情,这是在 REST 中执行此操作的正确方法吗?

我正在使用 Django 和 django-tastypie

提前致谢!

【问题讨论】:

    标签: iphone django json rest tastypie


    【解决方案1】:

    是的;如果相关资源独立更新,这是正确的。 REST 架构依赖于缓存来提高性能,因此最适合用作原子实体的资源(请参阅more here)。这样,您可以更新资源 B 并使其表示保持新鲜,而无需更新资源 A。有关更多设计细节,请参阅this SO comment

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 2013-10-23
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      • 2014-04-07
      相关资源
      最近更新 更多