首页 > 解决方案 > 当任何事情都可以通过 POST 以 REST API 调用中最安全的通信方式完成时,所有 GET、PUT、DELETE 有什么用?

问题描述

我阅读了很多关于标题中提到的每个功能的信息,但我总是怀疑所有单个功能的主要用途是什么。有人可以详细给我解释一下吗?谢谢你。

标签: functionrest

解决方案


当任何事情都可以通过 POST 完成时,所有 GET、PUT、DELETE 有什么用

这是一个非常重要的问题。

请注意,从历史上看,SOAP基本上都是通过 POST 完成的。有效地将 HTTP 从应用协议减少到传输协议。

GET/PUT/DELETE 的一大优势是它们承诺的附加语义(意思是,作为所有资源同意的统一接口的一部分的语义)允许我们构建通用组件,这些组件可以用元数据做有趣的事情单独的数据,而无需了解有关消息正文的任何​​特定内容。

其中最重要的是GET,它保证请求的动作是安全的。这意味着,对于世界上的任何资源,我们都可以尝试一个 GET 请求来“看看会发生什么”。

换句话说,因为 GET 是安全的,我们可以拥有网络爬虫、自动文档索引,最终还有谷歌。

(另一个例子 - 今天,我可以向您发送一个裸 URI,例如https://www.google.com并且它“正常工作”,因为 GET 被统一理解,并且不需要我们分享有关有效负载或元数据。)

类似地,PUT 和 DELETE 有额外的语义约束,允许通用组件做一些有趣的事情,比如在网络不可靠时自动重试丢失的请求。

然而,POST 实际上是不受约束的,这极大地限制了通用组件的操作。

这并不意味着 POST 是错误的选择;如果请求的语义不值得标准化,那么 POST 就可以了


推荐阅读