编辑: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 ......那么,有没有办法逃避"我从数组生成列表时以编程方式编写错误的逗号?
答案 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();