前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue post请求参数在controller层无法封装问题

vue post请求参数在controller层无法封装问题

作者头像
多凡
发布2019-11-01 09:24:01
1.1K0
发布2019-11-01 09:24:01
举报
文章被收录于专栏:sringboot

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_44580977/article/details/100149694

在这里插入图片描述
在这里插入图片描述

如图 post请求

在这里插入图片描述
在这里插入图片描述

后端controller 层对象参数打印为null。

问题解决方案 修改请求数据格式 this.http.post("item/category",this.http.post("item/category",this.http.post("item/category",this.qs.stringify(data)); 就可以了,下面讲解原因

post提交数据的四种编码方式
1. application/x-www-form-urlencoded

这应该是最常见的post编码方式,一般的表单提交默认以此方式提交。大部分服务器语言对这种方式都有很好的支持。

这要求,post字符串格式是这样的, name=%E6%96&parentId=2 因此刚刚的问题 需要讲json转成此格式。

2. multipart/form-data

这也是一种比较常见的post数据格式,我们用表单上传文件时,必须使form表单的enctype属性或者ajax的contentType参数等于multipart/form-data。使用这种编码格式时发送到后台的数据长得像这样子

在这里插入图片描述
在这里插入图片描述

不同字段以–boundary开始,接着是内容描述信息,最后是字段具体内容。如果传输的是文件,还要包含文件名和文件类型信息

3. application/json

axios默认提交就是使用这种格式。如果使用这种编码方式,那么传递到后台的必须是序列化后的json字符串。我们可以将application/json与application/x-www-form-urlencoded发送的数据进行比较

首先是application/json:

在这里插入图片描述
在这里插入图片描述

接着是application/x-www-form-urlencoded:

在这里插入图片描述
在这里插入图片描述

这里可以明显看出application/x-www-form-urlencoded上传到后台的数据是以key-value形式进行组织的,而application/json则直接是个json字符串。如果在处理application/json时后台还是采用对付application/x-www-form-urlencoded的方式将会产生问题。问题如题无法封装。

解决思路

既然我们知道axios post方法默认使用application/json格式编码数据,那么解决方案就有两种,一是后台改变接收参数的方法,另一种则是将axios post方法的编码格式修改为application/x-www-form-urlencoded,这样就不需要后台做什么修改了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • post提交数据的四种编码方式
    • 1. application/x-www-form-urlencoded
      • 2. multipart/form-data
        • 3. application/json
          • 解决思路
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档