Node.JS:如何在URL请求中使用百分比符号?

Node.JS:如何在URL请求中使用百分比符号?,node.js,api,magento,request,Node.js,Api,Magento,Request,我试图从Magento2请求一个简单的API搜索,但显然我不能在URL请求中使用%符号。有没有其他方法可以在URL中使用百分号 %\u%在[值]之后 请求链接: const request_data = { url: 'http://.../rest/V1/products?searchCriteria[filter_groups][0][filters][0]'+ '[field]=name&searchCriteria[filter_groups][0][filt

我试图从Magento2请求一个简单的API搜索,但显然我不能在URL请求中使用%符号。有没有其他方法可以在URL中使用百分号

  • %\u%在[值]之后
请求链接:

const request_data = {
    url: 'http://.../rest/V1/products?searchCriteria[filter_groups][0][filters][0]'+
    '[field]=name&searchCriteria[filter_groups][0][filters][0][value]=%Example%'+
    '&searchCriteria[filter_groups][0][filters][0][condition_type]=like',
    method: 'GET',
};
控制台错误:

const request_data = {
    url: 'http://.../rest/V1/products?searchCriteria[filter_groups][0][filters][0]'+
    '[field]=name&searchCriteria[filter_groups][0][filters][0][value]=%Example%'+
    '&searchCriteria[filter_groups][0][filters][0][condition_type]=like',
    method: 'GET',
};
URIError:URI格式不正确

at decodeURIComponent (<anonymous>)
at OAuth.deParam (/Users/Kevin/Desktop/TestingModules/node_modules/oauth-1.0a/oauth-1.0a.js:227:27)
at OAuth.deParamUrl (/Users/Kevin/Desktop/TestingModules/node_modules/oauth-1.0a/oauth-1.0a.js:245:17)
at OAuth.getParameterString (/Users/Kevin/Desktop/TestingModules/node_modules/oauth-1.0a/oauth-1.0a.js:142:132)
at OAuth.getBaseString (/Users/Kevin/Desktop/TestingModules/node_modules/oauth-1.0a/oauth-1.0a.js:124:130)
at OAuth.getSignature (/Users/Kevin/Desktop/TestingModules/node_modules/oauth-1.0a/oauth-1.0a.js:100:36)
at OAuth.authorize (/Users/Kevin/Desktop/TestingModules/node_modules/oauth-1.0a/oauth-1.0a.js:87:39)
at Object.module.exports.init (/Users/Kevin/Desktop/TestingModules/test.js:36:43)
at [eval]:1:19
at ContextifyScript.Script.runInThisContext (vm.js:50:33)
解码组件()处的

在OAuth.deParam(/Users/Kevin/Desktop/TestingModules/node_modules/OAuth-1.0a/OAuth-1.0a.js:227:27)
位于OAuth.deParamUrl(/Users/Kevin/Desktop/TestingModules/node_modules/OAuth-1.0a/OAuth-1.0a.js:245:17)
位于OAuth.getParameterString(/Users/Kevin/Desktop/TestingModules/node_modules/OAuth-1.0a/OAuth-1.0a.js:142:132)
在OAuth.getBaseString(/Users/Kevin/Desktop/TestingModules/node_modules/OAuth-1.0a/OAuth-1.0a.js:124:130)
在OAuth.getSignature(/Users/Kevin/Desktop/TestingModules/node_modules/OAuth-1.0a/OAuth-1.0a.js:100:36)
在OAuth.authorize(/Users/Kevin/Desktop/TestingModules/node_modules/OAuth-1.0a/OAuth-1.0a.js:87:39)
在Object.module.exports.init(/Users/Kevin/Desktop/TestingModules/test.js:36:43)
在[评估]:1:19
在ContextifyScript.Script.runInThisContext(vm.js:50:33)

问题

%
字符是url的转义字符,是url中url编码特殊字符的第一个字符。它表示编码字符的开头(由一个
%
后跟两个十六进制字符组成)。获取uri错误的原因是,在解析uri时,计算机会看到
%
,然后查看接下来的两个字符,以确定要编码的字符。因此,
%Ex
被误认为是字符编码(但x不是十六进制字符,因此会得到格式错误的URI)。查看或获取更多信息

解决方案


要对百分号进行编码,请将
%
替换为
%25
,这是百分号的编码。

问题

%
字符是url的转义字符,是url中url编码特殊字符的第一个字符。它表示编码字符的开头(由一个
%
后跟两个十六进制字符组成)。获取uri错误的原因是,在解析uri时,计算机会看到
%
,然后查看接下来的两个字符,以确定要编码的字符。因此,
%Ex
被误认为是字符编码(但x不是十六进制字符,因此会得到格式错误的URI)。查看或获取更多信息

解决方案


要对百分号进行编码,请将
%
替换为
%25
,这是百分号的编码。

在此线程中检查Ilia Rostovtsev的答案=>在此线程中检查Ilia Rostovtsev的答案=>感谢此解决方案Henry感谢此解决方案Henry