0

我目前正在使用 RestKit 0.20 开发 iOS 应用程序,以从 Tastypie API 访问数据。

我正在尝试从这样的 URL 获取提要数据

/api/v2/feed/?format=json

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

{
  "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.

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

非常感谢 :)

4

1 回答 1

0

您必须在 Feed 资源中定义:

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

美味派文档中的更多信息http://django-tastypie.readthedocs.org/en/latest/resources.html

为什么是资源 URI?资源 URI 在 Tastypie 传递数据的方式中扮演着重要角色。这似乎与其他简单地内联相关数据的解决方案非常不同。尽管 Tastypie 可以内联这样的数据(在具有关系的字段上使用 full=True),但默认情况下是提供 URI。

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

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

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

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

于 2013-02-05T14:30:31.727 回答