问题描述
如果您的模型包含一个名为created"和updated"的字段
If you model contains a filed which are called "created" and "updated"
当您使用 PUT 更新此记录的内容时..
When you use PUT to update content to this record..
created 应该设置为数据创建或修改的时间吗?由于PUT是幂等的,所以不应该依赖之前的值
Should created be set to the time of data creation or modification? Since PUT is idempotent, so it should not rely on previous value
因为updated总是在你发出请求的时候被修改,所以违反了幂等原则?
Since updated is always modified when you issue the request, so it violated the principle of idempotent?
推荐答案
我真的不明白你在这里问什么.没有理由将 created_at
设置为修改时间,因为它们是两个不同的概念.
I don't really understand what you're asking here. There's no reason created_at
would be set to the modification time, since they are two distinct concepts.
因为updated总是在你发出请求的时候被修改,所以违反了幂等原则?
您关于 updated_at
总是被修改的假设是不正确的(至少在 Rails 中不是,也不应该在其他任何地方).如果多次执行相同的 PUT
,则不会违反幂等性,因为这些后续请求不会修改任何属性,因此 updated_at
时间 not 改变了.
Your assumption that updated_at
is always modified isn't true (at least not in Rails, nor should it be anywhere else). If you do an identical PUT
multiple times, idempotence is not violated since these subsequent requests don't modify any of the attributes, and thus the updated_at
time is not changed.
有一个有趣的在 Rails 博客上发表关于 PUT
&PATCH
增加了很多.在我看来,用户永远不应该将 created_at
或 updated_at
与他们的请求一起发送(因为服务器通常应该忽略它们并自行设置它们),尽管它确实是如果这违反了 PUT
应该发送整个对象的想法,这是值得怀疑的.然而,如果这个想法被忽略了(就像在 Rails 中一样,也可能在其他地方),那么 PUT
确实是幂等的.
There is an interesting post on the Rails blog about PUT
& PATCH
that adds a lot more to this. The way I see it, the user should never send created_at
or updated_at
with their request (since the server should probably usually ignore them and set them itself), though it is indeed questionable if this violates the idea that a PUT
should send the entire object. However, if that idea is ignored (as it often is in Rails, and perhaps elsewhere), then PUT
is indeed idempotent.
这篇关于放置和幂等的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!