springcloud发布resful,前端用axios请求后台

2 篇文章 0 订阅

      springcloud发布resful,前端用axios请求后台,发现后台的参数获取都是null。开始以为是哪里写错了,折腾了很久。后来上网搜到了解决方案,根源在于前端用axios发送请求时Content-Type默认是application/json;charset=UTF-8。而后台用的Content-Type是'Content-Type': 'application/x-www-form-urlencoded'。两者不一致导致。

下面是axios的post请求常见的数据格式(content-type)

  1. Content-Type: application/json : 请求体中的数据会以json字符串的形式发送到后端
  2. Content-Type: application/x-www-form-urlencoded:请求体中的数据会以普通表单形式(键值对)发送到后端
  3. Content-Type: multipart/form-data: 它会将请求体的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件

知道原因后,所以有几种解决方案:

一种是修改axios的内容类型,如下:

全局方式:axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

请求时指定方式:

axios({ headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, method: 'post', url: '/api/lockServer/search', data: {xxx: 'xxx'} })

另一种是后台使用Map<String,Object> params参数来接收:

GET请求时可以用@RequestParam Map<String,Object> params,也可以用@RequestBody Map<String, Object> params;POST请求只能用@RequestBody Map<String, Object> params。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值