[英]how to "escape" a comma in a comma-separated list in a POST request?
编辑: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 ... 那么,当我从数组生成列表时,有没有办法以编程方式“转义”错误的逗号?
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 的,但它非常适合我的用例!
您可以遍历您发送的列表,用双引号将逗号括在字符串中。 然后在服务器端处理那些双引号。 这将保持您的列表完整性
使用类似这样的东西来替换子字符串:
str = str.replace(/,/g, '","');
在服务器端,您可以忽略包含在双引号中的所有逗号。
尝试
var namesList = arrayNames.map(function(val) { return val.replace(',', '\\,');}).toString();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.