哪种HTTP请求方法不会更改服务器的状态?

时间:2019-05-09 16:57:47

标签: http server request

很难找到不改变服务器状态的请求方法的信息。

PUT

PATCH

POST

GET

我的假设是GET仅是因为它不会向服务器引入任何新信息。

3 个答案:

答案 0 :(得分:0)

这是一个约定,不是强制性规则。在设计REST接口时,人们通常使用GET进行不更改基础资源状态的操作,而使用PUT / PATCH / POST / DELETE进行操作。就是说,这不过是一个约定;我已经看到主要供应商的应用违反了它。按照惯例,没有人严格遵守,基础架构不会因破坏它而受到惩罚。

此外,这仅适用于REST风格的接口。例如,在SOAP协议中,所有内容都是通过POST实现的。

答案 1 :(得分:0)

正确执行安全语义是服务器上应用程序的责任,Web服务器本身(为Apache,Nginx或IIS)不能单独执行。特别是,应用程序不应允许 GET 请求更改其状态。

对安全方法的调用,不更改服务器的状态:

GET /pageX.html HTTP/1.1

对非安全方法的调用,它可能会更改服务器的状态:

POST /pageX.html HTTP/1.1

对幂等但不安全的方法的调用:

DELETE /idX/delete HTTP/1.1

在这些选项中,

GET 是正确的选择。

请参考:https://developer.mozilla.org/en-US/docs/Glossary/safe

答案 2 :(得分:0)

IANA 有一个 list of standard HTTP Methods。 “安全”的方法不应改变服务器状态。不“安全”的方法可能