【发布时间】:2013-12-26 01:50:12
【问题描述】:
我正在尝试将 Ember.js 和 Flask Restless 结合起来,但在连接 JSON API 时遇到了困难。
问题是我需要按摩 JSON 以匹配 Ember 期望的客户端。
Ember 正在POST 上发送类似的内容:
u'todo': {u'isCompleted': False, u'title': u'hello'}}
但 Flask Restless 期待这样的事情
{'is_completed': False, 'title': u'hello'}
我可以做到这一点,如下所示,但是由于 Flask Restless preproccesor 不接受返回参数,并且必须更改数据对象并创建一个包含我想要的新字典不起作用.所以我需要通过添加和删除我需要的键来笨拙地改变给定的数据字典。
有没有更好的解决方案可以轻松扩展到更复杂的模型?
def ember_formatter(result):
for key in result.keys():
if key != 'objects':
del result[key]
result['todos'] = result['objects']
del result['objects']
def pre_ember_formatter(data=None, **kw):
data['is_completed'] = data['todo']['isCompleted']
data['title'] = data['todo']['title']
del data['todo']
restless_manager.create_api(
Todo,
methods=['GET', 'POST', 'DELETE', 'PUT', 'PATCH'],
url_prefix='/api',
collection_name='todos',
results_per_page=-1,
postprocessors={
'GET_MANY': [ember_formatter]
},
preprocessors={
'POST': [pre_ember_formatter],
}
)
【问题讨论】:
标签: python json ember.js flask flask-restless