从根本上说,是的,存在允许与每个“实体”进行不同“交互”的方法。HTTP 的设计使您可以将每个 URL 视为一个实体。
/users
代表所有用户
/users/dave
代表一个特定的用户
POST /users
让您创建一个新用户
PUT /users/dave
允许您修改特定用户
GET /users
获取用户列表
GET /users?name=dave
让您查询名为“dave”的用户列表
等等...
这就是 HTTP 的使用方式,每个动词都有特定的隐含含义。您可以以任何您真正想要的方式使用这些动词,但GET
暗示“被动”信息检索,whilePOST
和PUT
暗示DELETE
破坏性变化。
浏览器和其他客户端确实以不同的方式处理这些问题。任何东西GET
都可以在任何时候被多次请求,可以被缓存,可以被预取,可以被乱序查询。更具破坏性的操作应仅在请求时执行一次,而不是缓存、预取或其他任何操作。如果您正在“重新加载”通过POST
.
POST 表单“在后台”发送数据,而 GET 在 URL 中传递它们。它与协议有什么关系,还是只是浏览器的约定?
“在后台”是错误的思维方式。区别在于URL和请求正文。GET
请求不应/不得在其请求正文中包含任何内容。同样,它只是被动信息检索,并且必须仅包含 HTTP 标头。一个POST
请求可以有一个请求正文。请求的 URL和正文中都可以包含“数据” 。同样,假设GET
URL 可以共享和传递,因为它只是链接到信息。POST
另一方面,请求需要非常慎重,因此其信息不应该也不需要在 URL 中。