2017-05-15 12 views
1

私はEveフレームワークをREST APIサービスに使用しています。 はまた、私はいくつかのアクションの前にいくつかの前処理を行うためのDBのフックを使用しています: 私はon_updateフックにデータベースに私の更新されたデータを保存する必要はありますかそれはupdatesなどでoriginalアイテムを更新するだけで十分です: http://python-eve.org/features.html#database-event-hooksEveフレームワーク:on_updateフック

私の質問は:

original.update(updates) 

またはこのように何とかしてこのデータを保存するために必要なのは:

updated_item = original.update(updates) 
# Fetch somehow requested resource from `resource_name` and do staff like this: 
updated_resource = RequestedResource(updated_item) 
updated_resource.commit() 

それとももっと良い/もっとEVEの方法がありますか?

ところで、私がリクエストをやっている:あなたのon_updateフックで

requests.patch("http://127.0.0.1:7000/users/2", headers=headers, json={"name": "John", "age": 30}) 

答えて

1

を、あなたはちょうどあなたがパラメータとして受け取ったupdatesのdictに変更したいデータを変更/追加する必要があります。この時点で既にPATCHリクエスト本体が含まれており、これがアップデートに送信されます。

originalリソースには更新中のリソースが含まれており、参照用に使用できますが、変更する必要はありません。

+0

上記のリクエストを 'requests'で送信すると' updates'に '{" name ":" John "、" age ":30}'があり、私のオリジナルでは元のデータです。しかし、同じアイテムを2回目に取得すると、古いデータ(更新されていない)が含まれています – smart

+1

PATCHのHTTP応答は何ですか?これはうまくいくはずですので、いくつかの検証エラーが発生しているようです。あなたはエタグヘッダを使用していますか? – gcw

+0

( 'message:'、u '{"created_at": "2017-03-24T09:08:05"、 "_status": "OK"、 "_links":{"self":{"href": "users/2 "、" title ":" User "}}}、" updated_at ":" 2017-05-16T12:20:46 "、" id ":2} ') (' status: '、200) – smart

関連する問題