如何逃避" POST请求中以逗号分隔的列表中的逗号?

时间:2016-08-08 02:59:35

标签: javascript string post comma

编辑:API开发人员通过使用另一个分隔符并在请求中指定它来提供解决方案(请参阅下面我对自己问题的回答)

我正在向RESTful API发送POST请求,这需要以逗号分隔的参数列表:



var request = require('request-promise'); //promisified npm request

// the list of names is huge
// those names are stored in a MongoDB database
// the namesList is generated programmatically before the request
var namesList = "name1,name2,name3,name4"

var requestOptions = {
  method: 'POST',
  uri: 'https://myAPI/someEndPoint/',
  body: {
    key: myAccessKey,
    names: namesList
  },
  json: true
};

request(requestOptions)
.then( () => {_do_something_} );




它适用于大多数名称,但其中一些包含逗号:



var arrayNames = ["foo bar", "barfoo", "stupid, comma", "dammit"];

// is converted by my code in :

var namesList = "foo bar,barfoo,stupid, comma, dammit";




这不可避免地导致错误的列表被发送到API ......那么,有没有办法逃避"我从数组生成列表时以编程方式编写错误的逗号?

3 个答案:

答案 0 :(得分:2)

API开发人员期待已久的答案已经到来(不久前发送了一封电子邮件),解决方案非常简单:只使用另一个分隔符:



var namesList = "name1;name2;name3;name4" // use ';' instead of ',' here...

var requestOptions = {
  method: 'POST',
  uri: 'https://myAPI/someEndPoint/',
  body: {
    key: myAccessKey,
    names: namesList,
    delimiter: ';' // and specify the delimiter there !
  },
  json: true
};

request(requestOptions)
.then( () => {_do_something_} );




我不知道delimiter字段是否是此API的标准或特定字段,但它适用于我的用例!

答案 1 :(得分:0)

您可以遍历要发送的列表,将逗号用双引号引起来。 然后在服务器端处理这些双引号。 这将保留您的列表完整性

使用类似这样的内容替换subString:

str = str.replace(/,/g, '","');

然后在serverSide上,您可以忽略所有用双引号引起来的逗号。

答案 2 :(得分:-1)

var namesList = arrayNames.map(function(val) { return val.replace(',', '\\,');}).toString();