gpt4 book ai didi

wcf - 对 Http 动词感到困惑

转载 作者:可可西里 更新时间:2023-11-01 15:15:09 25 4
gpt4 key购买 nike

我很困惑什么时候以及为什么要在 REST 中使用特定的动词?

我知道一些基本的事情,比如:

Get -> for retrieval
Post -> adding new entity
PUT -> updating
Delete -> for deleting

按照我上面写的操作使用这些属性,但我不明白为什么?如果我在 REST 的 Get 方法中添加一个新实体或在 POST 中更新一个实体,会发生什么情况?或者可能在 DELETE 里面我添加了一个实体。我知道这可能是一个菜鸟问题,但我需要理解它。这听起来让我很困惑。

最佳答案

@archil has an excellent explanation滥用动词的陷阱,但我要指出的是,这些规则并不像您所描述的那样严格(至少就协议(protocol)而言)。

  • GET 必须是安全的。这意味着 GET 请求不得以任何实质性方式更改服务器状态。 (服务器可以做一些额外的工作,比如记录请求,但不会更新任何数据。)
  • PUT 和 DELETE 必须是幂等的。这意味着对同一 URI 的多次调用将与一次调用具有相同的效果。因此,例如,如果您想将一个人的名字从“Jon”更改为“Jack”,并且您使用 PUT 请求来执行此操作,那没关系,因为您可以执行一次或 100 次,并且该人的名字仍然会被更新给“ jack ”。
  • POST 不保证安全性或幂等性。这意味着您可以在技术上使用 POST 请求做任何您想做的事情。但是,您将失去客户可以利用这些假设的任何优势。例如,您可以使用 POST 进行搜索,这在语义上更像是 GET 请求。不会有任何问题,但浏览器(或代理或其他代理)永远不会缓存该搜索的结果,因为它不能假设请求的结果没有任何改变。此外,网络爬虫永远不会执行 POST 请求,因为它无法假定该操作是安全的。

万维网的整个 HTML 版本在没有 PUT 或 DELETE 的情况下运行得很好,使用 POST 进行删除或更新也很好,但是如果您可以支持 PUT 和 DELETE 进行更新和删除(以及其他幂等操作)它只是好一点,因为代理可以假设该操作是幂等的。

参见 official W3C documentation了解有关安全性和幂等性的真正细节。

关于wcf - 对 Http 动词感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6895729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com