2013-02-05 77 views
0

我目前正在使用RestKit 0.20從iOS應用程序訪問Tastypie API中的數據。Restkit:如何從多個來源獲取和映射數據

,我試圖從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把它像一個外鍵 "user": "/api/v2/user/1/"網址

,我必須嵌套調用objectRequestOperation。

我很困惑,因爲我在數據成功加載時使用阻止回調。因此,在請求供稿完成後,是否還有比每個供稿要求用戶數據更好的方法?

非常感謝你:)

回答

0

你必須在飼料資源定義:在tastypie DOC http://django-tastypie.readthedocs.org/en/latest/resources.html

爲什麼資源的URI

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

更多信息? 資源URI在Tastypie傳送數據的方式中扮演着重要的角色。這似乎與其他簡單內聯相關數據的解決方案非常不同。儘管Tastypie可以像這樣內聯數據(在關係字段中使用full = True),但缺省情況是提供URI。

URI很有用,因爲它導致有效負載較小,只允許您提取對您很重要的數據。你能想象一個對象可以上千的項目,你可能不感興趣的一個實例。

的URI也很緩存能,因爲每個端點的數據不太可能經常改變。

而URI鼓勵正確使用每個端點來顯示端點覆蓋的數據。

除了意識形態,你應該使用任何適合你。如果您偏好較少的請求&端點,則可以使用full = True,但要注意每種方法的後果。

+0

是否有可能發送選擇性內聯數據,而不是全部? – Turbo