http get方式传递数组?后端接收到的是什么?

总有一个惊喜在转角处等你

今天遇到一个奇怪的要求。
后端:你需要通过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')
	}
}
...

如此即可解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值