Restkit:如何从多个源获取和映射数据

时间:2013-02-05 10:11:58

标签: ios restkit tastypie

我目前正在使用RestKit 0.20的iOS应用程序来访问Tastypie API中的数据。

我正在尝试从此网站获取Feed数据

/api/v2/feed/?format=json

然后我会得到如下数组的Feed。

{
  "meta": {
    "limit": 20,
    "next": null,
    "offset": 0,
    "previous": null,
    "total_count": 2
  },
  "objects": [
    {
      "id": 1,
      "info": "This is my first post",
      "pub_date": "2013-02-03T15:59:33.311000",
      "user": "/api/v2/user/1/",
      "resource_uri": "/api/v2/feed/1/"
    },
    {
      "id": 2,
      "info": "second post, yeah",
      "pub_date": "2013-02-03T16:00:09.350000",
      "user": "/api/v2/user/1/",
      "resource_uri": "/api/v2/feed/2/"
    }
  ]
}

如果我想获取更多关于用户的数据,Tastypie将其作为url发送为外键"user": "/api/v2/user/1/",我是否必须嵌套调用objectRequestOperation。

我很困惑,因为我在数据加载成功时使用了块来回调。因此,在请求提要完成后,还有比为每个提要再次请求用户数据更好的方法。

非常感谢:)

1 个答案:

答案 0 :(得分:0)

您必须在Feed资源中定义:

user = fields.ToOneField(UserResource, full=True)

tastypie doc http://django-tastypie.readthedocs.org/en/latest/resources.html

中的更多信息

为什么要使用资源URI? 资源URI在Tastypie如何提供数据方面发挥着重要作用。这似乎与其他简单内联相关数据的解决方案截然不同。虽然Tastypie可以像这样内联数据(在关系字段上使用full = True),但默认是提供URI。

URI很有用,因为它会导致较小的有效负载,让您只获取对您很重要的数据。您可以想象一个对象有数千个您可能不感兴趣的相关项目的实例。

URI也非常可缓存,因为每个端点的数据不太可能频繁更改。

URI鼓励正确使用每个端点来显示端点覆盖的数据。

除了意识形态,你应该使用适合你的任何东西。如果您更喜欢请求和更少的端点,可以使用full = True,但要注意每种方法的后果。