Python Eve框架:在更新挂钩上
我正在为RESTAPI服务使用Eve框架。 此外,我还使用DB挂钩在某些操作之前进行一些预处理: 我的问题是: 我是否需要将更新后的数据保存到数据库中的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
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在内部设置的,您不能将它们设置为您想要的。