Javascript 识别和编码URL的问题
我在分析/操作URI时遇到问题: 问题陈述:Javascript 识别和编码URL的问题,javascript,url,Javascript,Url,我在分析/操作URI时遇到问题: 问题陈述: `/demo/bigquery/order_items?fields=users.email&f[users.comma]=%22Abbeville%2C+Georgia%22` const encodedExample = `/demo/bigquery/order_items?fields=users.email&f[users.comma]=%22Abbeville%2C+Georgia%22` // the last par
`/demo/bigquery/order_items?fields=users.email&f[users.comma]=%22Abbeville%2C+Georgia%22`
const encodedExample = `/demo/bigquery/order_items?fields=users.email&f[users.comma]=%22Abbeville%2C+Georgia%22` // the last param is encoded
const regularExample2 = `/demo/bigquery/order_items?fields=users.email&f[users.comma]="Abbeville, Georgia"` //
const specialEncode = (url) => {
for (let queryParam of urlObj) {
const [urlKey, urlValue] = queryParam
// Check to see if url contains f[users.comma]
if (urlKey.includes('f[')) {
urlObj.set(urlKey, encodeURI(urlValue))
}
}
return urlObj.toString() // doesn't seem to work
}
我想对f[users.comma]进行编码并返回它
[Case-1]我从后端服务获取一个url,对[users.comma]进行编码并返回它
[Case-2]我从后端服务获取了一个url,f[users.comma]已经编码。所以不要重复编码并返回它
预期输出:
`/demo/bigquery/order_items?fields=users.email&f[users.comma]=%22Abbeville%2C+Georgia%22`
const encodedExample = `/demo/bigquery/order_items?fields=users.email&f[users.comma]=%22Abbeville%2C+Georgia%22` // the last param is encoded
const regularExample2 = `/demo/bigquery/order_items?fields=users.email&f[users.comma]="Abbeville, Georgia"` //
const specialEncode = (url) => {
for (let queryParam of urlObj) {
const [urlKey, urlValue] = queryParam
// Check to see if url contains f[users.comma]
if (urlKey.includes('f[')) {
urlObj.set(urlKey, encodeURI(urlValue))
}
}
return urlObj.toString() // doesn't seem to work
}
代码:
`/demo/bigquery/order_items?fields=users.email&f[users.comma]=%22Abbeville%2C+Georgia%22`
const encodedExample = `/demo/bigquery/order_items?fields=users.email&f[users.comma]=%22Abbeville%2C+Georgia%22` // the last param is encoded
const regularExample2 = `/demo/bigquery/order_items?fields=users.email&f[users.comma]="Abbeville, Georgia"` //
const specialEncode = (url) => {
for (let queryParam of urlObj) {
const [urlKey, urlValue] = queryParam
// Check to see if url contains f[users.comma]
if (urlKey.includes('f[')) {
urlObj.set(urlKey, encodeURI(urlValue))
}
}
return urlObj.toString() // doesn't seem to work
}
我觉得我的方法太离谱了。非常感谢您的帮助。因为后端服务返回一个编码或解码的url 我们可以首先从后端服务解码url(如果url已经编码,则不会产生任何异常)
const encodedExample=`/demo/bigquery/order_items?fields=users.email&f[users.comma]=%22Abbeville%2C+Georgia%22`//最后一个参数已编码
const regularExample2=`/demo/bigquery/order_items?fields=users.email&f[users.comma]=“佐治亚州阿贝维尔”`
const specialEncode=(url)=>{
让decodedUrl=decodeURI(url);
设encodedUrl=encodeURI(decodedUrl);
//修复“f[users.comma]”,因为encodeURI也将对[and]进行编码
encodedUrl=encodedUrl.replace(“f%5b用户.逗号%5D”,“f[用户.逗号]”)
console.log(encodedUrl);
返回编码durl;
}
特殊代码(EncodeDexSample);//日志和返回:/demo/bigquery/order_items?fields=用户。email&f[users.comma]=%22Abbeville%252C+Georgia%22
特殊代码(常规示例2);//日志和返回:/demo/bigquery/order_items?fields=用户。email&f[用户.逗号]=%22Abbeville%252C+Georgia%22