Ember.js と Flask Restless を組み合わせようとしていますが、JSON API とのインターフェイスに問題が発生しています。
問題は、Ember がクライアント側で期待しているものと一致するように JSON をマッサージする必要があることです。
Ember は次のようなものを送信していPOST
ます:
u'todo': {u'isCompleted': False, u'title': u'hello'}}
しかしFlask Restlessはこのようなものを期待しています
{'is_completed': False, 'title': u'hello'}
以下に示すようにこれを行うことができますが、Flask Restless プリプロセッサは戻り引数を受け入れず、データ オブジェクトをその場で変更する必要があり、必要なものを含む新しい dict を作成することはできません。したがって、必要なキーを追加および削除して、指定されたデータ 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],
}
)