繁体   English   中英

REST API 中 PUT 与 POST 的有效负载

[英]Payload for PUT vs POST in REST API

我在面试中被问到以下问题 -

If you are hitting the same request with PUT and with POST http method then what will be the difference in payload?

考虑到我没有太多在 REST 工作的经验,我什至不知道有效载荷是什么。 我尝试谷歌搜索,但没有发现任何令人信服的东西。

任何人都可以帮忙吗?

根据这个页面restfulapi.net ,PUT请求应该引用已经存在的项目(例如在连接的数据库中)。 换句话说,它旨在更新现有项目。 因此,有效负载不必包含项目的所有属性,只需包含您要更新的那些。

另一方面 POST 意味着插入新项目。 这意味着有效载荷应该包含(几乎)所有内容。

问题是,如果您发送更多相同的 PUT 请求,则该项目应保持与仅发送一个 PUT 的情况相同。

如果您发送两个相同的 POST 请求,则会创建两个新的相同项目(具有不同的 id)。 这意味着 POST 请求不是幂等的。

编辑: 这里也可能有帮助。

我什至不知道有效载荷是什么。

面试官可能指的是 HTTP 请求的消息体(参见RFC 7230 )。

如果您使用 PUT 和 POST http 方法遇到相同的请求,那么有效负载会有什么区别?

这可能是一个尝试探索你是否理解 HTTP POST方法和 HTTP PUT方法之间的语义差异。

PUT 方法请求创建目标资源的 state 或将其替换为请求消息有效负载中包含的表示定义的 state。

想想“保存文件”。

POST 的说明不太具体

POST 方法请求目标资源根据资源自己的特定语义处理请求中包含的表示。

如果这看起来很模糊......你是对的。 POST 请求的消息体几乎可以表示任何内容。 POST 是 HTTP 方法的“垃圾抽屉”——任何不值得标准化的东西都在那里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM