如何使用NodeJS中的请求模块发送重复的查询字符串

问题描述 投票:-1回答:1

我有一个request url,它接受重复的查询字符串来发送数据。格式为:

http://<rest_url>/resource?scheduledate=2018-02-25&scheduledate=2018-03-02

这将检索两个日期之间的数据。现在的问题是如何发送查询字符串。我正在使用requests。我的代码是

var options = {
            url: rest_url ,
 // this will not work since you cant have duplicate keys
            qs:{
              'scheduledDate':moment().add(-1,'days').format('YYYY-MM-DD'),
              'scheduledDate':moment().add(1,'days').format('YYYY-MM-DD');
            },

            auth: {
              'bearer': token[0]['access_token']
            }
          }

          // **************** Rest Request to API *************************

          request.get(options, function(error, response, body) {
            if (!error && response.statusCode === 200) {

我现在如何发送重复的查询字符串?我试过了

  var yesterday = moment().add(-1,'days').format('YYYY-MM-DD');
  var OneDayinFuture=moment().add(1,'days').format('YYYY-MM-DD');
  var query_string =yesterday+ "&scheduledDate="+OneDayinFuture; 
   var options = {
            url: rest_url ,
            qs:{
              'scheduledDate':query_string               
            },
            auth: {
              'bearer': token[0]['access_token']
            }
          }

端点抛出错误。

我知道可能有一个选项,我可以添加带有URL的query_string,但这不会起作用,因为我递归地按照下一页链接。因此,它必须是一个查询字符串,除非有明确的方法。我有点被困在这里。

javascript node.js
1个回答
2
投票

将两个值放在一个数组中,并将{ indices: false }传递给qsStringifyOptions选项:

var options = {
  url: rest_url,
  qs: {
    scheduledDate: [ date1, date2 ],
  },
  qsStringifyOptions: { indices: false },
  //...
};

这在qs README的Stringifying部分中有记录:

当数组被字符串化时,默认情况下它们被赋予显式索引:

qs.stringify({ a: ['b', 'c', 'd'] });
// 'a[0]=b&a[1]=c&a[2]=d'

您可以通过将indices选项设置为false来覆盖它:

qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false });
// 'a=b&a=c&a=d'
© www.soinside.com 2019 - 2024. All rights reserved.