无法在expressjs路由器URL请求中保留特殊字符
我试图使用以下条件从数据库中查询记录:维生素+锌每5ML糖浆100MG/10MG 这是我的请求url的外观:无法在expressjs路由器URL请求中保留特殊字符,express,Express,我试图使用以下条件从数据库中查询记录:维生素+锌每5ML糖浆100MG/10MG 这是我的请求url的外观: http://localhost:4200/api/search?key=VITAMINS%20+%20ZINC%20100MG/10MG%20PER%205ML%20SYRUP router.get('/search', (req, res, next) => { const query = req.query; console.log(query.key); .
http://localhost:4200/api/search?key=VITAMINS%20+%20ZINC%20100MG/10MG%20PER%205ML%20SYRUP
router.get('/search', (req, res, next) => {
const query = req.query;
console.log(query.key);
.... omitted
});
这是我的express路由器,看起来像:
http://localhost:4200/api/search?key=VITAMINS%20+%20ZINC%20100MG/10MG%20PER%205ML%20SYRUP
router.get('/search', (req, res, next) => {
const query = req.query;
console.log(query.key);
.... omitted
});
这里的问题是我无法保留+
特殊字符,因此最终打印出的日志不是路由器内的原始标准
VITAMINS ZINC 100MG/10MG PER 5ML SYRUP
就URI而言,
+
字符是其中一种
当保留集中的字符(“保留字符”)已
特定上下文中的特殊含义(“保留目的”),以及URI
scheme说有必要将该字符用于其他字符
则必须对字符进行百分比编码
在您的情况下,在点击客户端的URL之前,需要对查询字符串进行百分比编码:
蛋白质组分(“维生素+锌”)
然后在服务器端(即express)使用
decodeURIComponent()
对查询进行解码您是否尝试对查询字符串进行编码?我尝试了decodeURIComponent,但仍然与记录的输出相同。我的意思是,如果您可以控制生成URL的代码,您可以在客户端使用encodeURIComponent()
,并在服务器端使用解码。@Ankit嘿,我能够解决我的问题,这要感谢您的想法。首先,我在客户端执行了一个encodeURIComponent
,然后在服务器上执行了一个decodeURIComponent
,以呈现相同的标准,非常感谢。。。介意回答一下吗?我很乐意接受。