koa获取post请求中的数组参数数据缺失

第一次写后端代码,用的koa……


前端请求用的axios,做了常规的post请求配置

config.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8';
config.data = qs.stringify(config.data, { arrayFormat: 'indices' });

发送的请求是这样的,其中phone_num是一个数组
image.png
view source
image.png

但在服务端接收到的数据里面,phone_num变成了字符串,并且取值只有数组中的第一个数据了
image.png


这是服务端的写法

router.post('/接口地址', async ctx => {
    console.log('ctx.request.body', ctx.request.body);
    ctx.body = 'OK';
});

怀疑是Connent-Type的问题
image.png
于是加了Connent-Type的设置

router.post('/接口地址', async ctx => {
    ctx.set('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
    console.log('ctx.request.body', ctx.request.body);
    ctx.body = 'OK';
});

Connent-Type倒是变了 但是获取的数组数据依旧没有变
image.png
image.png


网上搜了很多也没有找到这类的问题,我以前写纯前端的时候也是这么发post请求的呀……
求求大佬救救孩子吧T_T

阅读 3.5k
1 个回答

有两个可能:

  • koa里面负责解释body的中间件没有配置好
  • 中间件不支持这种格式去传数组

其中第二种方式在用express的时候碰到过,传过去的数组参数变成了一个第一个字符串。解决方法是用另外一种方式传递数组,然后解决了。又或者你将传一个字符串过去,然后在服务端自己解析为数组

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏