Http 请求方法(GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE、CONNECT)

Http 请求方法(GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE、CONNECT)

参考:https://blog.csdn.net/haif_city/article/details/78333213
参考:https://blog.csdn.net/potato512/article/details/76696582

根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP的1.0版本中只有三种请求方法: GET, POST 和 HEAD方法。到了 1.1 版本时,新增加了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

HTTP 定义了与服务器交互的不同方法,最基本的方法有4种,分别是 GET,POST,PUT,DELETE。URL 全称是统一资源定位符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而 HTTP 中的 GET,POST,PUT,DELETE 就对应着对这个资源的查,改,增,删 4 个操作。到这里,大家应该有个大概的了解了,GET 一般用于获取/查询资源信息,而 POST 一般用于更新资源信息。

GET

  • 请求指定的页面信息,并返回实体主体。
  • GET 请求请提交的数据放置在 HTTP 请求协议头中,GET 方法通过 URL 请求来传递用户的输入,GET 方式的提交你需要用 Request.QueryString 来取得变量的值。
  • GET 方法提交数据,可能会带来安全性的问题,数据被浏览器缓存。
  • GET 请求有长度限制。

GET 请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的 select 操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。

根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。

所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。这里安全的含义仅仅是指是非修改信息。

幂等的意味着对同一 URL 的多个请求应该返回同样的结果。这里我再解释一下幂等这个概念:

幂等(idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。
  幂等有一下几种定义:
  对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运算就是一个例子,在实数集中,有abs(a)=abs(abs(a))。
  对于双目运算,则要求当参与运算的两个值是等值的情况下,如果满足运算结果与参与运算的两个值相等,则称该运算幂等,如求两个数的最大值的函数,有在在实数集中幂等,即max(x,x) = x。

PUT

与 GET 不同的是,PUT 请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的 update 操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次 PUT 操作,其结果并没有不同。

由客户端向服务器传送的数据取代指定的文档的内容。

POST

POST 请求同 PUT 请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的 insert 操作一样,会创建新的内容。几乎目前所有的提交操作都是用 POST 请求的。

根据 HTTP 规范,POST 表示可能修改变服务器上的资源的请求。继续引用上面的例子:还是新闻以网站为例,读者对新闻发表自己的评论应该通过POST实现,因为在评论提交后站点的资源已经不同了,或者说资源被修改了。

GET 和 POST 的区别:

1.GET 请求的数据会附在 URL 之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以 & 相连,
POST 把提交的数据则放置在是 HTTP 包的包体中。

2."GET 方式提交的数据较少,理论上 POST 没有限制,可传较大量的数据,POST 是没有大小限制的,HTTP 协议规范也没有进行大小限制,说 “POST数据量存在80K/100K的大小限制” 是不准确的,POST 数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。

POST 的安全性要比 GET 的安全性高。而这里安全的含义是真正的 Security 的含义,比如:通过GET 提交数据,用户名和密码将明文出现在 URL 上,因为

  • (1)登录页面有可能被浏览器缓存
  • (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用 GET 提交数据还可能会造成 Cross-site request forgery 攻击。

总结一下,Get 是向服务器发索取数据的一种请求,而 Post 是向服务器提交数据的一种请求,在FORM(表单)中,Method 默认为"GET",实质上,GET 和 POST 只是发送机制不同,并不是一个取一个发!

DELETE

DELETE 请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。

DELETE 请求一般返回3种码
200(OK)—— 删除成功,同时返回已经删除的资源。
202(Accepted)—— 删除请求已经接受,但没有被立即执行(资源也许已经被转移到了待删除区域)。
204(No Content)—— 删除请求已经被执行,但是没有返回资源(也许是请求删除不存在的资源造成的)。

既然 PUT 和 POST 操作都是向服务器端发送数据的,那么两者有什么区别呢。POST 主要作用在一个集合资源之上的(url),而 PUT 主要作用在一个具体资源之上的(url/xxx),通俗一下讲就是,如 URL 可以在客户端确定,那么可使用 PUT,否则用 POST。

综上所述,我们操作时常用以下:

1、POST /url 创建
2、DELETE /url/xxx 删除
3、PUT /url/xxx 更新
4、GET /url/xxx 查看

CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

OPTIONS

允许客户端查看服务器的性能。

TRACE

回显服务器收到的请求,主要用于测试或诊断。


随着架构的发展,现在出现REST(Representational State Transfer),一套支持 HTTP 规范的新风格,这里不多说了,可以参考《RESTful Web Services》。

你可能感兴趣的:(HTTP)