HTTP 有哪些方法?

HTTP 方法

HTTP1.0 定义了三种请求方法:GET,POST 和 HEAD 方法

HTTP1.1 新增了六种请求方法:OPTIONS,PUT,PATCH,DELETE,TRACE 和 CONNECT

这些方法的具体作用是什么?

方法描述

GET

通常用于请求服务器发送某些资源

POST

发送数据给服务器

HEAD

请求资源的头部信息,并且这些头部与 HTTP GET 方法请求时返回的一致

该请求方法的一个使用场景是在下载一个大文件前先获取其大小再决定是否要下载,以此可以节约带宽资源

或者是欲判断某一资源是否存在,使用 HEAD 要比 GET 要更好一些

OPTIONS

当发起跨域请求时,浏览器常发送 OPTIONS 预请求,用于检测服务器允许的 http 方法

若服务器接受该跨域请求,浏览器才会继续发送正式请求

PUT

发送数据给服务器

PATCH

用于对资源进行部分修改

DELETE用于删除指定的资源
TRACE

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

CONNECT

其作用就是将服务器作为代理,让服务器代替用户去访问其他页面(说白了就是翻墙),然后将数据返回给用户

幂等概念

定义:同一个请求方法执行多次和仅执行一次的效果完全相同,即为幂等

GET 和 POST 有什么区别?

区别描述

数据传输方式不同

GET 请求通过 URL 传输数据,而 POST 的数据通过请求体传输

安全性不同

POST 的数据因为在请求主体内,所以有一定的安全性保证

而 GET 的数据在 URL 中,通过历史记录很容易查到数据信息

特性不同

GET 是安全(这里的安全是指只读特性,就是使用这个方法不会引起服务器状态变化)且幂等

而 POST 是非安全非幂等

GET 无害

刷新、后退等浏览器操作 GET 请求是无害的,POST 可能重复提交表单

数据类型不同

GET 只允许 ASCII 字符,而 POST无限制

PUT 和 POST 都是给服务器发送新增资源,有什么区别?

最主要的区别是:PUT 是幂等的,而 POST 非幂等

除此之外还有一个区别,通常情况下,PUT 的 URI 指向是具体单一资源,而 POST 可以指向资源集合

举个例子,我们在开发一个博客系统,当我们要创建一篇文章的时候往往用 POST 

https://www.jianshu.com/articles,这个请求的语义是,在 articles 的资源集合下创建一篇新的文章,如果我们多次提交这个请求会创建多个文章,这是非幂等的

而 PUT 

https://www.jianshu.com/articles/123456 的语义是更新对应文章下的资源(比如修改作者名称等),这个 URI 指向的就是单一资源,而且是幂等的,比如你把『刘德华』修改成『彭于晏』,提交多少次都是修改成『彭于晏』

PS:『POST表示创建资源,PUT表示更新资源』这种说法是错误的,两个都能创建资源,根本区别就在于幂等性

PUT 和 PATCH 都是给服务器发送修改资源,有什么区别?

区别一:PUT 是幂等的,PATCH 是非幂等的

区别二:PUT 和 PATCH 都是更新资源,而 PATCH 用来对已知资源进行局部更新

比如我们有一篇文章的地址 https://www.jianshu.com/articles/123456,这篇文章的可以表示为:

article = {
  author: "lzw",
  age: 18,
  id: 007,
};

当我们要修改文章的作者的年龄时,我们可以直接发送 PUT 请求:https://www.jianshu.com/articles/123456,这个时候的数据应该是:

article = {
  author: "lzw",
  age: 20,
  id: 007,
};

如果你不想每次都带有这么多无用的信息,那么可以发送 PATCH 请求:https://www.jianshu.com/articles/123456,这个时候只需要:

article = {
  age: 20,
};

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值