function - 当任何事情都可以通过 POST 以 REST API 调用中最安全的通信方式完成时,所有 GET、PUT、DELETE 有什么用?
问题描述
我阅读了很多关于标题中提到的每个功能的信息,但我总是怀疑所有单个功能的主要用途是什么。有人可以详细给我解释一下吗?谢谢你。
解决方案
当任何事情都可以通过 POST 完成时,所有 GET、PUT、DELETE 有什么用
这是一个非常重要的问题。
请注意,从历史上看,SOAP基本上都是通过 POST 完成的。有效地将 HTTP 从应用协议减少到传输协议。
GET/PUT/DELETE 的一大优势是它们承诺的附加语义(意思是,作为所有资源同意的统一接口的一部分的语义)允许我们构建通用组件,这些组件可以用元数据做有趣的事情单独的数据,而无需了解有关消息正文的任何特定内容。
其中最重要的是GET
,它保证请求的动作是安全的。这意味着,对于世界上的任何资源,我们都可以尝试一个 GET 请求来“看看会发生什么”。
换句话说,因为 GET 是安全的,我们可以拥有网络爬虫、自动文档索引,最终还有谷歌。
(另一个例子 - 今天,我可以向您发送一个裸 URI,例如https://www.google.com并且它“正常工作”,因为 GET 被统一理解,并且不需要我们分享有关有效负载或元数据。)
类似地,PUT 和 DELETE 有额外的语义约束,允许通用组件做一些有趣的事情,比如在网络不可靠时自动重试丢失的请求。
然而,POST 实际上是不受约束的,这极大地限制了通用组件的操作。
这并不意味着 POST 是错误的选择;如果请求的语义不值得标准化,那么 POST 就可以了。
推荐阅读
- php - 本次持久登录认证的解释与实现
- hadoop - 如何将压缩的 csv 文件加载到配置单元表中?
- c# - 如何在 Xamarin.forms 中复制标签的视图框行为?
- python - 不能从for循环内部调用方法?
- python - 设置 pymysql 以使用 django、pytest 和 pytest-django
- elasticsearch - 在客户端实现 created_on 和 updated_on 逻辑
- delphi - Delphi Ms word自动化页面设置并保存在windows 10中
- python - 如何使用 python print 在输出中间剥离空间
- bash - if then 语句中的嵌套 case 语句
- c - 为什么 SDL2 窗口淡出?