Get参数包含数组值时的格式设置

query参数中有数组类型值,传递给后端接口时,可能需要按后端接收的方法来设置数组序列化的方式。

本框架内部使用request.js为请求接口的库,该库默认使用qs模块格式化get参数,其中qs对数组类型的序列化有以下3中方式:

  qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })
  // 'a[0]=b&a[1]=c'
  qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })
  // 'a[]=b&a[]=c'
  qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })
  // 'a=b&a=c'

详见qs文档:[https://github.com/ljharb/qs#stringifying]

request.js默认使用第一种 indices 方式。如果不适用于自己的项目,则可配置request参数来改变序列化方式。在本文档的章节 coc -> Stage -> initHttpRequest 中有讲如何配置request,那么设置qs序列化方式的配置如下即可:

  cocer.before('initHttpRequest', (req, res, next) => {
    req.httpRequestConfig = {
      'qsStringifyOptions': {
        'arrayFormat': 'brackets'
      }
    };

    next();
  });

arrayFormat的值可以是 indices | brackets | repeat 三种。

results matching ""

    No results matching ""