【问题标题】:Express route for facebook requestfacebook请求的快速路线
【发布时间】:2013-03-03 06:41:07
【问题描述】:

我有一个请求进入我的应用程序,如下所示:

POST /?post%2F5125504547b49d91b2000001 200 53ms - 9.35kb

未编码时的样子:

POST /?post/5125504547b49d91b2000001 200 53ms - 9.35kb

我的问题是如何通过快速路线捕捉到这一点?

我尝试了以下方法:

app.all "/?post/:id",

app.all "/?post%2F:id",

有什么想法吗?

【问题讨论】:

    标签: node.js routes express


    【解决方案1】:

    路由路径定义是一个正则表达式所以你需要double escape问号,这是一个特殊字符

    app.all "/\\?post%2F:id"
    

    【讨论】:

      【解决方案2】:

      我建议使用中间件将 url 操纵回“正常”的东西,以便您可以像在 express 中一样路由和响应它。

      可能是这样的伪代码:

        app.use(function (req, res, next) {
          if (req.originalUrl.match(/^\/(\?post)/))
            req.url = req.originalUrl = req.originalUrl.replace('%2F', '/').replace('/?','/');
          next();
        });
      

      【讨论】: