Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms HTTP方法(动词)的用途是什么?_Forms_Http_Httpverbs - Fatal编程技术网

Forms HTTP方法(动词)的用途是什么?

Forms HTTP方法(动词)的用途是什么?,forms,http,httpverbs,Forms,Http,Httpverbs,我已经阅读了一些关于HTTP方法的资料,但我仍然不清楚最简单的事情:它们是用来干什么的 我看到的每一个资料都指出了什么时候应该使用特定的方法,但是在实践中它会发生什么变化呢?比如说,GET和POST处理请求的方式有什么不同吗 或者这些方法允许我们在一个URL上处理多个行为 最后,浏览器呢?表单只能发出GET和POST请求,它们以不同的方式处理它们。POST表单“在后台”发送数据,而GET在URL中传递数据。它是否与协议有关,或者只是浏览器的惯例 提前感谢您为我澄清。:) 基本上,是的,存在允许与

我已经阅读了一些关于HTTP方法的资料,但我仍然不清楚最简单的事情:它们是用来干什么的

我看到的每一个资料都指出了什么时候应该使用特定的方法,但是在实践中它会发生什么变化呢?比如说,GET和POST处理请求的方式有什么不同吗

或者这些方法允许我们在一个URL上处理多个行为

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


提前感谢您为我澄清。:)

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

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

这就是HTTP的设计使用方式,每个动词都有特定的隐含含义。你可以用你想要的任何方式使用这些动词,但是
GET
意味着“被动”的信息检索,而
POST
PUT
DELETE
意味着破坏性的改变

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

POST表单“在后台”发送数据,而GET在URL中传递数据。它是否与协议有关,或者只是浏览器的惯例


“背景”是错误的思维方式。区别在于URL请求主体之间。
GET
请求的请求正文中不应/不得包含任何内容。同样,这只是被动信息检索,必须完全由HTTP头组成。
POST
请求可以有一个请求正文。请求的URL和正文中都可以包含“数据”。同样,假设
GET
url可以共享和传递,因为它只是指向信息的链接<另一方面,code>POST请求需要经过深思熟虑,因此其信息不应该也不需要出现在URL中。

我大部分时间都在web浏览器中使用HTTP,因此可能我对HTTP协议的理解被破坏了。网页的每个动作都有不同的URL,比如/users/edit、users/delete等等。这就是我一直认为的——你想做些不同的事情,改变URL。但我知道它是针对单独的管理页面的,这些页面都是通过
GET
请求的。表单操作大多指向同一URL。我可以假设这一切都是针对有效的HTTP使用的吗?另外,还有很多API也遵循这种约定。例如,删除内容不会在
/users/dave
上使用
DELETE
方法,而是使用类似于
/users/DELETE/dave
的方法。这是错误的吗?这里有两个问题:1)如果您仅通过HTTP与API交互,则不需要
/users/dave/edit
。您只需
将/users/dave
与请求正文中的所有数据放在一起。当然,没有人真正手工编写HTTP请求。现在,这只适用于RESTful API交互
/users/dave/edit
是为您提供填写该数据的界面所必需的。2) 浏览器传统上只支持
GET
POST
,而不支持其他方法。这主要是实现中的一个不幸缺陷。自从SPA(单页应用程序)出现以来,它在客户端上的所有视图都是Javascript,并且在服务器上实际上只有一个RESTful API,HTTP的“正确”使用就比以前更加现实了。对。也许作为一个经验法则,试着保留你的URL,这样任何普通的
GET
请求都会有意义。您可以
POST/users/dave
在正文中包含数据,但也可以简单地
GET/users/dave
/users/dave
是一个可以对其执行不同操作的实体。这些操作的“修饰符”应该放在查询参数中,例如
GET/users/dave?profile=full
。这些动词不一定要和其他动词有意义。