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

整理一下http几种请求方式,方便以后自己查看。有时候分不清用哪种请求方式,有什么区别,主要是get、put、post这三种的区别

一、八种http请求方式

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

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

这么直接看可能比较难以理解,按照开发规范针对数据库的操作可以理解为:

序号方法描述
1get查看
2post创建
3put更新
4delete删除

其余四种我用的不多,这里不做整理,有些情况下业务并不仅仅是单纯针对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不是。

四、@RequestParam()和@RequestBody

同一个请求中,只有一个RequestBody,可以有多个RequestParam

4.1@RequestBody()

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。

@RequestBody与前端传过来的json数据的匹配规则是传过来的数据中,RequestBody接收数据的模型里面有的get,set方法才接收,没有的就无视掉
在这里插入图片描述

如果后端参数是一个对象,且该参数前是以@RequestBody修饰的,那么前端传递json参数时,必须满足以下要求:

1.后端@RequestBody注解对应的类在将HTTP的输入流(含请求体)装配到目标类(即:@RequestBody后面的类)时,会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合(或可转换为),实体类的对应属性的类型要求时,会调用实体类的setter方法将值赋给该属性。

2.json字符串中,如果value为"“的话,后端对应属性如果是String类型的,那么接受到的就是”",如果是后端属性的类型是Integer、Double等类型,那么接收到的就是null。

3.json字符串中,如果value为null的话,后端对应收到的就是null。

4.如果某个参数没有value的话,在传json字符串给后端时,要么干脆就不把该字段写到json字符串中;要么写value时, 必须有值,null 或""都行。

4.2@RequestParam()

RequestParam接收的是key-value里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收,它可以是url中的字段,也可以不是。
但必须注意的是,如果在后端方法参数前,指定了@RequestParam()的话,那么前端必须要有对应字段才行(当然可以通过设置该注解的required属性来调节是否必须传),否者会报错;如果参数前没有任何该注解,那么前端可以传,也可以不传.

参考资料

https://www.cnblogs.com/weibanggang/p/9454581.html
https://blog.csdn.net/qq_36183935/article/details/80570062
https://blog.csdn.net/haif_city/article/details/78333213
https://blog.csdn.net/justry_deng/article/details/80972817/

  • 67
    点赞
  • 371
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: GET、POST、PUT、DELETE 是四种不同的 HTTP 方法。 - GET 请求用于获取服务器上的资源。GET 请求是幂等的,意味着多次发送相同的 GET 请求不会对服务器上的资源造成影响。 - POST 请求用于向服务器提交数据。POST 请求不是幂等的,意味着多次发送相同的 POST 请求可能会对服务器上的资源造成影响。 - PUT 请求用于更新服务器上的资源。PUT 请求也是幂等的。 - DELETE 请求用于删除服务器上的资源。DELETE 请求也是幂等的。 ### 回答2: 在Web应用程序开发中,HTTP协议是非常重要的一种协议。它定义了客户端和服务器之间的通信规则,让Web应用程序能够通过HTTP标准接收和发送数据,支持通用的Web服务。 HTTP协议提供了一些基本操作,即get、post、put和delete,这些操作在Web API中有着不同的作用。这些方法定义了客户端可以向服务器发送的不同类型的请求,以及服务器应该如何响应这些请求。 1. GET方法 GET方法是HTTP协议中最常见的方法,也是最基本的获取信息的方法。该方法请求指定的资源,并返回它。客户端向服务器发送一个GET请求,服务器将返回请求的资源。GET方法通常用于获取某个资源的信息。 GET请求只是获取资源,不会修改它。因此,它是一种“安全”方法,不会对存储在服务器上的资源进行任何修改。GET方法通常用于在浏览器中获取网页内容、获取API数据等。 2. POST方法 POST方法是HTTP协议中第二个常见的方法,它通常用于向服务器提交数据。该方法在请求主体中包含数据,服务器接收到该请求后,会处理请求,根据该请求来不同的响应。 POST方法与GET方法不同,它会修改存储在服务器上的资源。因此,它是一种“非安全”方法,可能会引起潜在的问题,例如重复提交表单、错误的数据库更新等。 3. PUT方法 PUT方法是HTTP协议中的一种方法,它允许客户端向服务器提交新资源、更新现有资源或替换现有资源。PUT方法是一种更加强制的请求方法,不仅包含请求主体数据,还包含与资源相关的信息。 PUT方法主要用于更新数据,其典型用例包括更新客户端与服务器之间的数据、更新数据库记录等。PUT方法是一种“幂等”方法,即每个请求的结果都是相同的,不管请求的次数。 4. DELETE方法 DELETE方法是HTTP协议中的一种方法,它用于删除存储在服务器上的资源。与PUT方法一样,DELETE方法也是一种更加强制的请求方法,包含与资源相关的信息。DELETE方法是非安全的,因为它会删除存储在服务器上的资源。 常见的用例包括从数据库中删除记录、删除服务器上的文件等。DELETE方法是一种“幂等”方法,即每个请求的结果都是相同的,不管请求的次数。 总之,GET方法主要用于获取信息,POST方法主要用于向服务器提交数据,PUT方法主要用于更新数据,DELETE方法主要用于删除数据。在开发Web API时,根据具体需求选择正确的HTTP方法,可以提供更好的用户体验和服务。 ### 回答3: get、post、put、delete是常见的HTTP动词,用来表示HTTP请求的不同方式以及对服务器上的资源进行不同的操作。它们之间的区别主要在以下几个方面: 1. 请求方式:GET和POST是最常用的两种HTTP请求方式。GET用于请求资源,而POST用于提交数据。PUT和DELETE则用于对服务器上的资源进行修改或删除操作。 2. 请求参数:GET请求参数会附加在URL的后面,而POST请求参数则包含在请求体中。PUT和DELETE请求也可以携带参数,但是它们通常会有一个指定的资源URL。 3. 安全性:GET请求对服务器上的资源只是进行读取操作,比较安全。而POST、PUT、DELETE操作可能会对服务器上的资源进行修改或删除,需要用户进行一定的授权或身份验证。 4. 幂等性:幂等性是指对资源进行相同的操作时,结果应该是相同的。GET和DELETE请求都是幂等的,即对同一个资源多次请求结果不会发生改变。而POST和PUT请求则不一定是幂等的,因为多次请求可能会导致资源状态不一样。 总结而言,GET用于获取资源,POST用于提交数据,PUT用于修改资源,DELETE用于删除资源。每种请求方式都有其适用场景,我们在进行Web开发时需要结合需求和实际情况来选择合适的请求方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值