HTTP请求的8中方法浅析

来吧,之前想要总结这个问题来着,因为我个人也觉着挺重要的,但是总是被其他的内容给耽搁,遇到闭包了,我会想着先弄懂闭包吧,遇到DOM事件的问题了,会想着先弄明白DOM事件吧,所以 HTTP请求的方法就总是搁置了。好吧,前几天阿里面试的时候,真的就问到了这个问题,而我除了知道get和post之外,别的并不了解额。所以,现在赶紧的总结一下,以备后续的面试。

好,正文开始:

HTTP8种请求方法概述

HTTP协议中共定义了八种方法或者叫“动作”get,post,put, options,head,delete,trace,connect,来表明对Request-URI指定的资源的不同操作方式,具体介绍如下:

  • OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*’的请求来测试服务器的功能性。
  • HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
  • GET:向特定的资源发出请求。
  • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
  • PUT:用于向服务器发送请求,如果URI不存在,则要求服务器根据请求创建资源,如果存在,服务器就接受请求内容,并修改URI的原始版本
  • DELETE:请求服务器删除Request-URI所标识的资源。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断。
  • CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

上面是从博客中摘得。

上述方法中最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。上述内容讲的有些粗略,下面具体的就get、post和options来进行详细的介绍:

Get请求和post请求

get请求

  • 一般来讲get请求是用来信息获取的,它只会获取资源,并不会对资源进行更改,不会影响资源的状态。
  • get请求一般是以查询字符串的形式附在URL里,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。因此,存在一定的安全隐患
  • get提交的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。(这一点相信很多人都一直以为是2k的限制,其实并不是啊)

post请求

  • 根据HTTP规范,POST表示可能修改变服务器上的资源的请求。
  • Post是将表单中的数据放在form的数据体中,表单中的参数值对是通过request body发送给服务器,Post的所有操作对用户来说都是不可见的。
  • 理论上POST没有限制,可传较大量的数据

二者区别

这是一个面试的时候经常会被问到的一个问题,区别如下(个人认为):
1. get提交,数据放在url里面,所以数据是在浏览器可见的,不安全,而post提交是放在请求头中,用户不可见,所以比较安全;
2. 请求数据的大小,get有一定限制,而post可发送的数据没有限制
3. get一般用来请求数据,不会对数据进行更改,而post用于发送数据,会对数据进行修改
post请求
这里写图片描述

w3school上总结的一个表
这里写图片描述

options请求

官方定义:

options方法用于请求获得由request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或了解服务器的性能。
主要用途:
1. 获取服务器支持的HTTP请求方法;
2. 用来检车服务器的性能,例如,进行AJAX跨域请求时的预检,需要向另一个域名的资源发送一个HTTP options 请求头,用以判断实际发送的请求是否安全。

这里写图片描述

get,put,post,delete

  • get请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
  • put 是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
  • post同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
  • delete就是用来删除某一个资源的,该请求就像数据库的delete操作。

参考博文:
浅谈HTTP中Get与Post的区别
HTTP 方法:GET 对比 POST

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值