Python Eve框架:在更新挂钩上

Python Eve框架:在更新挂钩上,python,patch,insert-update,eve,Python,Patch,Insert Update,Eve,我正在为RESTAPI服务使用Eve框架。 此外,我还使用DB挂钩在某些操作之前进行一些预处理: 我的问题是: 我是否需要将更新后的数据保存到数据库中的on\u updatehook中,或者用updates更新原始项目就足够了,比如: original.update(updates) 或者需要以如下方式保存此数据: updated_item = original.update(updates) # Fetch somehow requested resource from `resource

我正在为RESTAPI服务使用Eve框架。 此外,我还使用DB挂钩在某些操作之前进行一些预处理:

我的问题是: 我是否需要将更新后的数据保存到数据库中的
on\u update
hook中,或者用
updates
更新
原始项目就足够了,比如:

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()
还是有更好/更好的方法

顺便说一句,我正在处理请求:

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

在你的
on\u update
钩子中,你只需要添加/更改你想在
updates
dict上更改的数据,并将其作为参数接收。此时它已经包含补丁请求正文,这是将发送到更新的内容


original
资源包含正在更新的资源,可以用作参考,但更改它是没有用的。

因此,当我使用
requests
发送上述请求时,在
updates
中,我有
{“name”:“John”,“age”:30}
并且在我的
中,original
是原始数据。但是,当我第二次获得相同的项目时,它包含我的旧数据(未更新)补丁的HTTP响应是什么?看起来它得到了一些验证错误,因为这应该可以工作。您是否正在使用/发送etag头?('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)如果您尝试在使用另一种工具(如postman或curl)请求补丁后的资源,它会工作吗?你也直接检查过数据层了吗?看到更改的数据了吗?很好!是的,那些元字段
\u创建的
\u更新的
是由eve在内部设置的,您不能将它们设置为您想要的。