总结get、put、post、delete的区别和用法

总结get、put、post、delete的区别和用法

云庄clouder

于 2021-07-09 16:56:02 发布

5542
 收藏 43
分类专栏: java 文章标签: java
版权

java
专栏收录该内容
3 篇文章0 订阅
订阅专栏
文章目录
一、八种http请求方式
二、put和post区别
三、get和post
四、@RequestParam()和@RequestBody
4.1@RequestBody()
4.2@RequestParam()
参考资料
整理一下http几种请求方式,方便以后自己查看。有时候分不清用哪种请求方式,有什么区别,主要是get、put、post这三种的区别

一、八种http请求方式
http/1.1协议中共定义了八种请求方式来表明requeset-url不同的操作,分别是get、post、head、options、put、delete、trace、connect。

序号    方法    描述
1    get    请求指定的页面信息,并返回实体主体
2    post    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。post请求可能会导致新的资源的建立和已有资源的修改。
3    put    从客户端向服务器传送的数据取代指定的文档内容
4    delete    请求服务器删除指定内容
5    head    类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
6    options    允许客户端查看服务器的性能
7    trace    回显服务器收到的请求,主要用于测试或者诊断
8    connect    预留给能够连接改为管道方式的代理服务器
这么直接看可能比较难以理解,按照开发规范针对数据库的操作可以理解为:

序号    方法    描述
1    get    查看
2    post    创建
3    put    更新
4    delete    删除
其余四种我用的不多,这里不做整理,有些情况下业务并不仅仅是单纯针对crud,所以最好能理解这几种请求方式的区别,然后根据不同的使用场景进行使用。delete很好理解,没什么好说的,主要是put、post、get,接下来逐个分析。

二、put和post区别
put和post操作都是向服务器端发送数据,但是put是被定义为idempotent(幂等,)的方法,而post是非幂等的,即多次发送同一个请求时候,产生的结果是一样的就是幂等性原则,这是为了当网络出现延迟等,服务器(客户端)之间发送请求没有收到回应,再重新发一次,实际上另一端已经接收到了第一次的请求,接着有接收第二次同一请求,如果是交易的业务没有幂等就会造成交易两次却只结算一次交易额。(让子弹飞:这不是欺负老实人嘛!)
put请求:如果两个请求相同,后一个请求会把第一个请求覆盖掉。(所以PUT用来改资源)。
Post请求:后一个请求不会把第一个请求覆盖掉。(所以Post用来增资源)。

三、get和post
这里差别比较多
1.关于安全性:post的安全性要相对比get的高,因为get的参数都是放在url中的,可以被缓存,截取直接就能获取数据,所以一般登录密码这些信息不会明文放在url中使用get请求发送。而post的数据都是放在RequestBody,可以进行一次加密,相对安全些。**使用get请求的,直接将地址复制粘贴就可以原样访问,而post一般不行,**我们在浏览器输入一个网址访问网站都是get请求。

2.请求数据上限:get请求的数据会放在url后面,使用?A=B格式(A是名称,B是参数)发送,这个url一般是有长度限制的,http协议没有对url长度进行限制,这个限定主要是浏览器和服务器的限制,一般是1024字节长度。而post可以将数据放在RequesetBody中传送,这里就没有数据量的上限了,get是无请求体的,所以RequestBody只能使用post方式提交。(后面会讲一下RequesetBody)。

3.关于tcp数据包:对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。实际上get会产生一个tcp数据包,post会产生两个数据,这就会造成响应时间问题,但并不是所有的浏览器都是post发两次包,firefox不是。
————————————————
版权声明:本文为CSDN博主「云庄clouder」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_56921066/article/details/118608143

 

posted @ 2022-07-07 13:52  ianCloud  阅读(820)  评论(0编辑  收藏  举报