axios get请求带参数_一篇文章带你了解Get和Post请求

      前言:以前认为get和post只不过是http两种发送请求的方式,他们的区别也就那样,熟悉的很。但今天在SpringBoot学习过程中却让我有了新的认识。写下这篇文章来记录一下

1.Get和Post是什么?

get和post是Http协议中两种发送请求的方式

  • GET- 从指定的资源请求数据

  • POST-向指定的资源提交要被处理的数据

1352c734d64d1b3ebc24adef1b247079.png

2.HTTP是什么?

HTTP是基于TCP/IP的关于数据在万维网中如何通信的协议

3.Get和Post区别

  1. url可见性

        get传参方式是通过地址栏URL传参,可以直接看到get传递的参数,post传递的参数URL不可见。get把请求的数据在URL后面通过?连接,通过&进行参数分割。参数与键值对形式传递。Post将参数存放在HTTP的包内

  2. 传输数据大小

       get传递数据是通过URL进行传递,传递的数据长度受URL大小的限制,URL 最大长度是2048个字符。post没有长度限制

  3. 后退页面

    get后退不会有影响,post后退会重新进行提交

  4. 缓存

    get请求可以被缓存,Post不可以被缓存

  5. 编码方式

    get请求只支持URL编码,post支持多种编码方式。get请求传递中文会乱码

  6. 历史记录

    get请求的记录会留在历史记录,post请求不会留在历史记录

  7. 字符类型

    get支持ASCII字符,post没有字符型限制

4.post相比较get传参方式的优点

  1. post安全性比get传参方式好

    a. post数据存在HTTP包中,一般不会被查找到

    b. post不会被浏览器缓存

    c.  不会留在历史记录中

  2. post传送数据没有字符和编码限制,能发送的数据类型更多

  3. post传送数据没有大小限制,比get可以发送更多的数据

    post缺点:速度比get传输慢,get效率更高

5.为什么get的效率比post高

  1.  get产生一个TCP数据包,post产生两个TCP数据包。但并不是所有的浏览器post都会请求两次,火狐只请求一次。(get直接发送数据,post先将请求头发送服务器确认,然后发送真正的数据)

  2. get会将数据进行缓存   

6.传统JavaWeb接收参数方式

    传统Servlet中,我们在前端页面使用$.ajax(),$.get(),或$.post()发送请求到servlet中时,servlet使用 request.getParameter("name", name )  通用

7.SpringBoot接收参数方式

    接下来就是重点了,也就是我遇到的问题之所在。话不多说,上图。

d854c4240b5066329436b39882128f7c.png

120bcb6c56fe4f5e99741fd39db53710.png

42c657f7273a56363270a3b76e061b99.png

   信息显示不出来

bf80d91242f99abc4911cc25b549fa83.png

dc86a084d5406c9f1a894ed8b0cda0ba.png

     为什么使用get可以拿到数据而post不行呢?  都是SpringSecurity框架惹的祸,SpringSecurity配置csrf(),csrf()会拦截所有的post请求,这涉及到了csrf攻击。解决方案也比较简单,直接设置http.csrf().disable()

由于spring的RequestParam注解接收的参数是来自于requestHeader中,即请求头,也就是在url中,格式为xxx?username=123&password=456,t通常用于Get请求向Post和Delete等其他类型的请求也可以使用

而RequestBody注解接收的参数则是来自于requestBody中,即请求体中。

一般用于处理application/json、application/xml等类型的数据,通常用于接收post和delete请求

所以使用get还是post传参还是比较讲究的。

问题:post请求可以用@RequestParam接收吗

前端使用json发送post请求,后端不使用@RequestParam,转而使用@Param注解

7cd2f96ba0d75417df1277e795b13fba.png

两种注解应用场景

fba62fd6087ed2d25687711b7195077f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值