EDIT : the API developer provided a solution by using another delimiter and specifying it in the request (see below my answer to my own question)
I am sending POST requests to a RESTful API, which require a comma-separated list of arguments :
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_} );It works fine for most of the names, but some of them contain a comma :
var arrayNames = ["foo bar", "barfoo", "stupid, comma", "dammit"]; // is converted by my code in : var namesList = "foo bar,barfoo,stupid, comma, dammit";
This inevitably leads to a wrong list being sent to the API… So, is there a way to “escape” the faulty comma programmatically when I generate the list from the array ?
Advertisement
Answer
The long awaited answer from the API developer has arrived (sent an e-mail a while ago), and the solution is as simple as it is efficient : just use another delimiter :
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_} );I don’t know if the delimiter field is standard or specific to this API, but it works perfectly for my use case !