[英]Modify JSON response of Flask-Restless
我正在嘗試使用Flask-Restless和Ember.js,這並不是那么好。 這是GET響應讓我沮喪。 例如,當我在/api/people
上執行GET
請求時,例如Ember.js期望:
{
people: [
{ id: 1, name: "Yehuda Katz" }
]
}
但Flask-Restless回應:
{
"total_pages": 1,
"objects": [
{ "id": 1, "name": "Yahuda Katz" }
],
"num_results": 1,
"page": 1
}
如何更改Flask-Restless的響應以符合Ember.js的要求? 我有這種感覺它可能在后處理器函數中,但我不知道如何實現它。
Flask擴展具有非常易讀的源代碼 。 您可以創建一個GET_MANY
后處理器:
def pagination_remover(results):
return {'people': results['objects']} if 'page' in results else results
manager.create_api(
...,
postprocessors={
'GET_MANY': [pagination_remover]
}
)
我沒有測試它,但它應該工作。
接受的答案在當時是正確的。 然而,Flask-Restless中的后期和預處理器工作已經改變。 根據文件 :
每種類型的請求的預處理器和后處理器接受不同的參數,但它們都沒有返回值(更具體地說,忽略任何返回的值)。 預處理器和后處理器就地修改它們的參數。
所以現在在我的后處理器中我只刪除任何我不想要的鍵。 例如:
def api_post_get_many(result=None, **kw):
for key in result.keys():
if key != 'objects':
del result[key]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.