首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改Flask-Restless的JSON响应

修改Flask-Restless的JSON响应
EN

Stack Overflow用户
提问于 2013-03-16 05:00:50
回答 2查看 2.6K关注 0票数 8

我正试着在Ember.js上使用Flask-Restless,这并不是很好。是GET响应把我给绊倒了。例如,当我在/api/people上执行GET请求时,例如Ember.js期望:

代码语言:javascript
复制
{ 
    people: [
        { id: 1, name: "Yehuda Katz" }
    ] 
}

但Flask-Restless的回应是:

代码语言:javascript
复制
{
    "total_pages": 1, 
    "objects": [
        { "id": 1, "name": "Yahuda Katz" }
    ], 
    "num_results": 1, 
    "page": 1
}

如何更改Flask-Restless的响应以符合Ember.js的要求?我有一种感觉,它可能在后处理器函数中,但我不确定如何实现它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-04 05:21:03

当时公认的答案是正确的。然而,Flask-Restless中的post和预处理器工作方式发生了变化。According to the documentation

每种类型的请求的预处理器和后处理器接受不同的参数,但它们都没有返回值(更具体地说,任何返回值都被忽略)。预处理器和后处理器就地修改它们的参数。

所以现在在我的后处理器中,我只删除任何我不想要的键。例如:

代码语言:javascript
复制
def api_post_get_many(result=None, **kw):
    for key in result.keys():
        if key != 'objects':
            del result[key]
票数 4
EN

Stack Overflow用户

发布于 2013-03-16 05:46:10

Flask扩展有pretty readable source code。您可以制作一个GET_MANY后处理器:

代码语言:javascript
复制
def pagination_remover(results):
    return {'people': results['objects']} if 'page' in results else results

manager.create_api(
    ...,
    postprocessors={
        'GET_MANY': [pagination_remover]
    }
)

我还没有测试它,但它应该可以工作。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15442025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档