簡體   English   中英

如何在 POST 請求的逗號分隔列表中“轉義”逗號?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM