HTTP有哪些方法,具体作用是什么
- HTTP1.0定义了三种请求方法:GET、POST和HEAD方法
- HTTP1.1新增了五种请求:OPTIONS、PUT、DELETE、TRACE和CONNECT
这些方法具体的作用是什么
- GET:通常用于请求服务器发送某些资源
- HEAD:请求资源的头部信息,并且这些头部与HTTP GET方法请求时返回一一致,该请求方法的一个使用场景是在下载一个大文件前先获取其大小再决定是否要下载,以此可以解决资源
- OPTIONS:用于获取目的资源所支持的通信选项
- POST:发送数据给服务器
- PUT:用于新增资源或者使用请求中的有效负载替换目标资源的表现形式
- DELETE:用于删除指定资源
- PATCH:用于对资源进行部分修改
- CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
- TRACE:回显服务器收到的请求,主要用于测试或诊断
GET和POST有什么区别
- 数据传输方式不同:GET请求只能通过URL传输数据,而POST的数据通过请求体传输。
- 安全性不同:POST的数据因为在请求主体内,所以有一定的安全性的保证,而GET的数据在URL中,通过历史记录、缓存很容易查到数据信息。
- 数据类型不同:GET只允许ASCII字符串,而POST无限制
- GET无害:刷新、后退等浏览器操作GET请求是无害的,POST请求可能重复提交表单
- 特性不同:GET是安全(这里安全是指只读特性,就是使用这个方法不会引起服务器状态变化)且幂等(幂等的概念是指同一个请求方法执行多次和执行一次的效果完全相同),而POST是非安全非幂等
PUT和POST都是给服务器发送新增资源,有什么区别
PUT和POST方法的区别是,PUT是幂等的:连续调用一次或多次的效果相同(无副作用),而POST方法是非幂等的
除此之外还有一个区别,通常情况下,PUT的URL指向是单一资源,而POST可以指向资源集合。
举个例子,我们在开发一个博客系统,当我们要创建一篇文章的时候往往用POST https://www.woshizhendeshuai.com/articles,这个请求的语义是,在article的资源集合下创建一篇新的文章,如果我们多次提交这个请求则会多次创建这个文章,这是非幂等的。
而PUT https://www.woshizhendeshuai.com/articles 的语义是更新对应文章下的资源(比如修改作者名称等等),这个URL指向的就是单一资源,而且是幂等的,比如你把“吴彦祖”修改成“我自己”,提交多少次都是修改成“我自己”
PUT和PATCH都是给服务器发送修改资源,有什么区别?
PUT和PATCH都是更新资源,而PATCH则用来对已知资源进行局部更新。
比如我们有一篇文章的地址https://www.woshizhendeshuai.com/articles/9527,这篇文章可以表示为:
article = {
author: '法外狂徒李青',
content: '大家都说我是高配版吴彦祖',
id: 9527
}
当我们要修改文章的时候,我们可以直接发送PUT https://www.woshizhendeshuai.com/articles/9527,这个时候数据应该是:
article = {
author: '法外狂徒德莱厄斯',
content: '大家都说我是高配版刘德华',
id: 9527
}
但是你觉得每次都带有这么多无用的信息,那么可以发送PATCH https://www.woshizhendeshuai.com/articles/9527,这个时候只需要:
{
author: '法外狂徒德莱厄斯',
content: '大家都说我是高配版刘德华',
}