如何解决如何将queryString中的逗号分隔符仅在最后
所以我目前有一个 API,我正在使用 queryParams。参数是颜色,我像这样调用 api:
{apiUrl}?firstQuery=someQuery&colour=Blue,Green
上述请求将从服务器请求蓝色和绿色的项目。
现在有时颜色会变得有点棘手并给我带来问题,特别是在颜色描述/文本本身中已经有逗号的长颜色。
以下是长/有问题的颜色列表:
const coloursWithCommas = [
'Red,Blue,Yellow and Green Play of Colour','Red,Green,Blue And Orange Play Of Colour','Orange With Green,Red,Yellow And Blue Play Of Colour','Green,Blue And Yellow Play Of Colour','Purple-Red,White and Blue-Green',];
正如您在我的 API 调用中看到的,我需要一个逗号分隔符才能一次发送多种颜色,但有些颜色中已经包含逗号。因此,此请求无法获得所需的颜色:
{apiUrl}?firstQuery=someQuery&colour=Blue,Yellow and Green Play of Colour
如您所见,我试图在 1 个请求中获得 3 种不同的颜色,分别是蓝色、绿色和红色、蓝色、黄色和绿色色彩游戏
为了解决这个问题,API 现在接受 |管道分隔符而不是逗号来发送多种颜色,同时尊重包含逗号的每个颜色值。
所以现在新的 api 调用是:
{apiUrl}?firstQuery=someQuery&colour=Blue|Green|Red,Yellow and Green Play of Colour|Purple-Red,White and Blue-Green
这将成功返回我蓝色、绿色、红色、蓝色、黄色和绿色的颜色、紫红色,白色和蓝绿色
我已经编写了这个辅助函数:
const convertCommaToPipe = (queryInput) => {
let queryStringName = queryInput.split('=')[0];
let queryString = queryInput.split('=')[1];
const coloursWithCommas = [
'Red,];
if(!coloursWithCommas.includes(queryString)){
queryString = queryString.replace(',','|');
} else{
const longColourIndex = coloursWithCommas.findindex((text) => text === queryString);
queryString = coloursWithCommas[longColourIndex] + '|';
}
return queryStringName + '=' + queryString;
}
这样我就可以从以下位置转换查询字符串:
colour=Blue,Blue And Yellow Play Of Colour,Orange With Green,Yellow And Blue Play Of Colour
到:
&colour=Blue|Green,Blue And Yellow Play Of Colour|Orange With Green,Yellow And Blue Play Of Colour
来自辅助函数的 queryInput 将始终以 colour=Blue
或 colour=Green,Blue And Yellow Play Of Colour
开头,然后它会一次构建/附加一个,然后它可以像 colour=Blue,Yellow and Green Play of Colour
这样的完整查询给出用户点击了这 3 种颜色。
它不会一次接收所有颜色查询,它会在用户单击 UI 时附加。这似乎是导致我的功能无法 100% 完全工作的原因。请建议在特定情况下实现我想要实现的目标的最佳方法。
解决方法
我建议您自行更改 API(假设它是您的 API)。 您应该使用 PUT 或 POST 并将颜色作为字符串数组传递。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。