基本了解使用 GET、POST 等 HTTP 方法
Posted
技术标签:
【中文标题】基本了解使用 GET、POST 等 HTTP 方法【英文标题】:Base understanding of using HTTP methods like GET, POST etc 【发布时间】:2018-01-17 00:30:55 【问题描述】:我正在考虑了解 HTTP 动词 GET、POST 等的基本用法... 我读了这些文章,但对我来说还不是很清楚:
In a RESTful application, how do we differentiate between an "action" and an HTTP verb (GET, POST, PUT, DELETE)?
Why use HTTP verbs?
Use of HTTP RESTful methods GET/POST/etc. Are they superfluous?
我只是没有看到为方法调用添加限定符(据我所知,GET、POST 等...是限定符)的建议。为什么不直接通过 URL 调用方法(如 server.domain/methods/addnewproduct),由服务器端决定做什么?我了解何时使用 GET、POST、UPDATE 等...(CRUD 程序 bla-bla-bla) 我只是不明白为什么要实现这些动词来限定远程方法调用。 看了很多遍,都是因为这些是安全的方法,但是为什么这些方法是安全的呢?
【问题讨论】:
【参考方案1】:为什么不直接通过 URL 调用方法(如 server.domain/methods/addnewproduct),由服务器端决定做什么?
URL 标识一个事物。 HTTP METHOD 描述了您希望如何与之交互。
http://example.com/HowToTellForAChild
可以代表你。
有人可能想获取有关您的信息,或者他们可能想在服务器上放置有关您的新信息。
它们仍然与同一个实体进行交互,但方式不同。
http://example.com/HowToTellForAChild/GET
会将身份识别和交互类型混为一谈。充其量只是令人困惑。
看了那么多遍,都是因为这些是安全的方法,但是为什么这些方法是安全的呢?
见the specification:
这些方法应该被认为是“安全的”。 这允许用户代理表示其他方法,例如 POST、PUT 和删除,以一种特殊的方式,让用户知道 正在请求可能不安全的操作。
举个实际例子:
假设您要通过 Internet 订购娃娃屋。你提交一个表格。它触发一个 POST 请求。
如果您随后按下刷新按钮,浏览器会识别出您只是发出 POST 请求,并询问您是否确定要再次发出请求。
这可以防止您意外订购第二个娃娃屋。
(虽然见the PRG pattern)。
【讨论】:
收集您的答案! :)以上是关于基本了解使用 GET、POST 等 HTTP 方法的主要内容,如果未能解决你的问题,请参考以下文章