今天改造一个其他系统的页面,直接把原来系统的接口拿过来复用,发现怎么传参都报400,地址参数都一样,怎么就报错了呢,报错原因大概是后台无法解析出参数(后台属于其他平台,无法测试)。通过对比,发现浏览器请求负载中参数格式还真不一样:
原始页面的负载:
解析后
我的传参负载:
解析后:
明显看出原始参数为字符串,我传的是对象 ,代码如下:
axios({
url: '/test/Controller/getWwjByWybmFILES',
method: "post",
data: {WYBM:'110000562294'} // "{\"WYBM\":\"110000562294\"}"
}).then(res=>{
}
对比出不同后,我就把对象和字符串都试了,发现并不起作用。首先想到的应该是header里面的参数问题,编码或者类型,但是都试了,跟原页面请求头保持一致了,还是不行。于是拿来了postman测试:
不行
不行
ok
咱底子薄,不懂就搜。什么是raw数据:
哦,原来是原始数据格式。行了,那就改格式。
经搜提供两种方式:
1、设置header中的Content-Type为text/plain。(测试不好使)
2、使用transformRequest配置来处理请求参数。(没问题)如下代码:
axios({
url: '/test/Controller/getWwjByWybmFILES',
method: "post",
transformRequest:[(data,header)=>{
return JSON.stringify(data)
}],
data: JSON.stringify({WYBM:'110000562294'})
}).then(res=>{
}