总有一个惊喜在转角处等你
今天遇到一个奇怪的要求。
后端:你需要通过get请求传递一个类似这样格式的参数 name[]=张三&name[]=李四&name[]=王五&sex=1
我:ok
【( 内心diss ) : 啥?咋一个字段传递好几遍 】
不过,不能问为什么,不然就显得自己不是很🐂🍷了
那就自己研究。
先用node搞了一个接口:
index.js
const express = require("express");
const app = express();
const testRouter = require("./test.js");
app.use("/test", testRouter);
// 服务器端口号为5500
app.listen(5555, (err) => {
if (!err)
console.log(
"login interface is start, Service address: http://localhost:5555 ......"
);
});
test.js
var router = express.Router();
router.get("/getApi", function (request, response) {
console.log("request 参数 ", request.query);
let resStatus = {
code: 000,
data: {},
msg: "测试返回数据",
};
response.send(resStatus);
});
module.exports = router;
接口已到位,接下来就是测试:
打开浏览器,输入:
http://localhost:5555/test/getApi?name[]=张三&name[]=李四&name[]=王五&sex=1
结果node打印的日志出乎意料:
?咋就变成数组了?啥情况?
但是在接口中真的发送数组的话,又会报错 400 Bad Request
,是因为 请求报文存在语法错误
那么该如何解决呢?
使用qs
插件
第一步:安装
npm install qs --save
第二步:在请求拦截器里添加如下代码
const qs = require('qs')
...
if(config.method === 'get'){
config.paramsSerilizer = function(){
return qs.stringify(params, {arrayFormat}:'repeat')
}
}
...
如此即可解决