这是个很基础的问题,面试常问,但是有些也容易被忽略。
http的请求方法目前有9种包括如下,用来指示对资源进行的操作,这些操作可以用一组特征来描述。
本行用来吐槽掘金的这个编辑器 真的功能太少,太难用了。。。。
特征名称: 是否有请求体 成功的响应是否有请求体 安全 幂等 可缓存 html表单支持?
GET 否 是 是 是 是 是
POST 是 是 否 否 否 是
PUT 是 否 否 是 否 否
DELETE 可能 可能 否 是 否 否
TRACE 否 否 否 是 否 否
HEAD 否 否 是 是 是 否
CONNECT 否 是 否 否 否 否
OPTIONS 否 否 是 是 否 否
PATCH 是 否 否 否 否 否
PUT和POST是有区别的,PUT是幂等的可以连续调用多次,POST不是幂等的,如果连续调用多次可能会有副作用,比如,订单被提交多次,如果是修改余额会造成余额出错。
POST比GET要安全,因为POST不可缓存。而且get请求发送的数据是url的一部分。 此处说的安全和上面表格中所说的安全不是同一个概念?
TRACE主要用来测试消息回路是否通畅。
HEAD请求主要用来请求资源的头部,一般用来获得资源的大小,以确定是否要下载该资源,不包含body,即使包含也会被忽略。
OPTIONS方法用于获取目的资源所支持的通信方式的选项。在 CORS 中,可以使用 OPTIONS 方法发起一个预检请求,以检测实际请求是否可以被服务器所接受。预检请求报文中的 Access-Control-Request-Method 首部字段告知服务器实际请求所使用的 HTTP 方法;Access-Control-Request-Headers 首部字段告知服务器实际请求所携带的自定义首部字段。服务器基于从预检请求获得的信息来判断,是否接受接下来的实际请求。