我正试着在Ember.js上使用Flask-Restless,这并不是很好。是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的要求?我有一种感觉,它可能在后处理器函数中,但我不确定如何实现它。
发布于 2013-12-04 05:21:03
当时公认的答案是正确的。然而,Flask-Restless中的post和预处理器工作方式发生了变化。According to the documentation:
每种类型的请求的预处理器和后处理器接受不同的参数,但它们都没有返回值(更具体地说,任何返回值都被忽略)。预处理器和后处理器就地修改它们的参数。
所以现在在我的后处理器中,我只删除任何我不想要的键。例如:
def api_post_get_many(result=None, **kw):
for key in result.keys():
if key != 'objects':
del result[key]发布于 2013-03-16 05:46:10
Flask扩展有pretty readable source code。您可以制作一个GET_MANY后处理器:
def pagination_remover(results):
return {'people': results['objects']} if 'page' in results else results
manager.create_api(
...,
postprocessors={
'GET_MANY': [pagination_remover]
}
)我还没有测试它,但它应该可以工作。
https://stackoverflow.com/questions/15442025
复制相似问题