Dre*_*son 7 python flask ember.js flask-restless
我正在尝试使用Flask-Restless和Ember.js,这并不是那么好.这是GET响应让我沮丧.例如,当我发出GET请求时/api/people,例如Ember.js期望:
{
people: [
{ id: 1, name: "Yehuda Katz" }
]
}
Run Code Online (Sandbox Code Playgroud)
但Flask-Restless回应:
{
"total_pages": 1,
"objects": [
{ "id": 1, "name": "Yahuda Katz" }
],
"num_results": 1,
"page": 1
}
Run Code Online (Sandbox Code Playgroud)
如何更改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]
}
)
Run Code Online (Sandbox Code Playgroud)
我没有测试它,但它应该工作.
当时接受的答案是正确的。然而 Flask-Restless 中的后处理器和预处理器工作已经发生了变化。根据文档:
每种类型的请求的预处理器和后处理器接受不同的参数,但它们都没有返回值(更具体地说,任何返回值都将被忽略)。预处理器和后处理器就地修改它们的参数。
所以现在在我的后处理器中,我只需删除任何我不需要的键。例如:
def api_post_get_many(result=None, **kw):
for key in result.keys():
if key != 'objects':
del result[key]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2581 次 |
| 最近记录: |