1

我已经阅读了几个关于 HTTP 方法的资料,但我仍然不清楚最简单的事情:它们有什么用?

我看到的每个来源都指出了何时应该使用特定的方法,但它在实践中会发生什么变化?比如说,GET 和 POST 之间处理请求的方式有什么区别吗?

或者也许这些方法可以让我们在一个 URL 上处理多种行为?

最后,浏览器呢?表单只能发出 GET 和 POST 请求,它们以不同的方式处理它们。POST 表单“在后台”发送数据,而 GET 在 URL 中传递它们。它与协议有什么关系,还是只是浏览器的约定?

预先感谢您为我澄清。:)

4

1 回答 1

3

从根本上说,是的,存在允许与每个“实体”进行不同“交互”的方法。HTTP 的设计使您可以将每个 URL 视为一个实体。

  • /users代表所有用户
  • /users/dave代表一个特定的用户
  • POST /users让您创建一个新用户
  • PUT /users/dave允许您修改特定用户
  • GET /users获取用户列表
  • GET /users?name=dave让您查询名为“dave”的用户列表

等等...

这就是 HTTP 的使用方式,每个动词都有特定的隐含含义。您可以以任何您真正想要的方式使用这些动词,但GET暗示“被动”信息检索,whilePOSTPUT暗示DELETE破坏性变化。

浏览器和其他客户端确实以不同的方式处理这些问题。任何东西GET都可以在任何时候被多次请求,可以被缓存,可以被预取,可以被乱序查询。更具破坏性的操作应仅在请求时执行一次,而不是缓存、预取或其他任何操作。如果您正在“重新加载”通过POST.

POST 表单“在后台”发送数据,而 GET 在 URL 中传递它们。它与协议有什么关系,还是只是浏览器的约定?

“在后台”是错误的思维方式。区别在于URL请求正文GET请求不应/不得在其请求正文中包含任何内容。同样,它只是被动信息检索,并且必须仅包含 HTTP 标头。一个POST请求可以有一个请求正文。请求的 URL和正文中都可以包含“数据” 。同样,假设GETURL 可以共享和传递,因为它只是链接到信息。POST另一方面,请求需要非常慎重,因此其信息不应该也不需要在 URL 中。

于 2015-02-16T01:51:00.543 回答