无法在expressjs路由器URL请求中保留特殊字符

时间:2018-05-22 07:24:04

标签: express

我尝试使用以下标准从数据库查询记录:维生素+ ZINC 100MG / 10MG PER 5ML糖浆

这是我的请求网址:

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

1 个答案:

答案 0 :(得分:0)

就URI而言,+字符是reserved characters之一。

  

当保留集中的字符(“保留字符”)具有时   特定上下文中的特殊含义(“保留目的”)和URI   scheme表示有必要将该字符用于其他方面   目的,那么角色必须是百分比编码。

在您的情况下,在客户端点击URL之前,查询字符串需要进行百分比编码:

  

encodeURIComponent(“VITAMIN + ZINC”)

然后在服务器端(即express)使用decodeURIComponent()解码查询。