我正在尝试将 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 不接受返回参数,并且数据对象必须就地更改并且创建包含我想要的内容的新 dict 将不起作用。所以我需要通过添加和删除我需要的键来笨拙地改变给定的数据字典。
有没有人有更好的解决方案可以轻松扩展到更复杂的模型?
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],
}
)