我目前正在使用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。
我很困惑,因为我在数据加载成功时使用了块来回调。因此,在请求提要完成后,还有比为每个提要再次请求用户数据更好的方法。
非常感谢:)
答案 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,但要注意每种方法的后果。