我尝试使用这个路由http://localhost:3030/api/words/عشق在我的express应用程序中,以便我可以匹配字典中的单词。
浏览器将url更改为http://localhost:3030/api/words/%D8%B9%D8%B4%D9%82,但是我编写了一个小型中间件,将其转换回原始版本,然后将其传递给路由。在路由中,我拥有检查波斯语/波斯语字符所包含的Unicode字符的正则表达式。
不确定发生了什么,因为中间件打印出
浏览器将url更改为http://localhost:3030/api/words/%D8%B9%D8%B4%D9%82,但是我编写了一个小型中间件,将其转换回原始版本,然后将其传递给路由。在路由中,我拥有检查波斯语/波斯语字符所包含的Unicode字符的正则表达式。
不确定发生了什么,因为中间件打印出
/words/عشق
,如果我删除正则表达式规则,路由也会打印出/words/عشق
。为什么express无法匹配这个路由?express不使用req.url来确定路由吗? /** Get word be string **/
api.get('/:word(^([\\u0600-\\u06FF]+\\s?)+$)', (req, res, next) =>{
console.log("persian version " + req.url);
res.send(req.params);
});
/** Url encoder middleware **/
function urlencoder(req, res, next) {
req.url = decodeURIComponent(req.url);
console.log("Middleware " + req.url);
next();
}
api.get
函数中解码它,然后再查找呢? - David