Node.js - 表示路线中的特殊字符(/campañas)

For*_*res 6 routes character node.js express

尝试使用Express框架在Node JS中设置路由时遇到问题.

我的路线是这样的:

app.get('/campaña/nueva', sms.nueva);
Run Code Online (Sandbox Code Playgroud)

但我不能让它工作,因为邪恶的"Ñ"(它与"N"tho一起使用)

我使用了codeigniter一段时间,您可以设置要启用或禁用的字符您是否知道任何workarround或在节点中启用它的方法?

Pet*_*ons 12

我认为你需要同时处理URL编码和UTF-8(也可能是Latin-1)变体.检查以下内容:

  1. 您的客户(浏览器)如何发送URL?

    • URL编码%C3%B1
      • chrome和firefox发送%C3%B1编码
      • 我认为这是主导和顺从的行为
    • Unicode?
      • 我测试了curl它,它看起来发送一个字符,我认为它只是从我的终端获得的任何编码,这可能是UTF-8.
  2. 在此基础上,尝试调整您的路线.您可以使用正则表达式或显式列表

.

app.get('/campaña/nueva', sms.nueva)
app.get('/campa%c3%b1a/nueva', sms.nueva)
//Or for convenience if you like
app.get('/' + encodeURIComponent('campaña') + '/nueva', sms.nueva) 
Run Code Online (Sandbox Code Playgroud)

我的猜测最终是大多数浏览器都会发送URL编码的版本,所以你可能只使用最后一个版本.


Bla*_*kus 5

$在我的路线中遇到了同样的问题。URL 编码字符在我的情况下不起作用,但转义一个有效。

所以我结束了

app.get('/\\$myRoute', function (req, res) {

}
Run Code Online (Sandbox Code Playgroud)