【问题标题】:Parse url encoded body with Restify使用 Restify 解析 url 编码的正文
【发布时间】:2014-01-20 23:36:42
【问题描述】:

我无法使用 restify 向我的 node.js API 发送 url 编码的帖子。我的 restify 应用程序有以下设置:

app.use(restify.acceptParser(app.acceptable));                                  
app.use(restify.queryParser());                                                 
app.use(restify.urlEncodedBodyParser());

但是当我通过以下请求使用 curl 请求我的应用程序时:

curl -X POST -H "Content-type: application/x-www-form-urlencoded" -d quantity=50 http://app:5000/feeds

我在我的视图中得到以下输入正文:

console.log(req.body)  // "quantity=50"

提前致谢,

马蒂亚斯

【问题讨论】:

    标签: node.js httprequest restify


    【解决方案1】:

    Restify 的默认设置将解析的参数放在req.params 中。这是由queryParser 和不同的bodyParser 中间件完成的。

    所以要访问quantity 参数,请使用req.params.quantity

    如果你真的想改用req.body,你需要将mapParams : false传递给bodyParser构造函数:

    app.use(restify.plugins.urlEncodedBodyParser({ mapParams : false }));
    

    现在req.body 将包含已解析的参数。

    【讨论】:

    • 使用解析器的那一刻,我的整个服务对任何 URL 都没有响应。它永远不会返回,也不会遇到断点
    • @ChristianBongiorno 这通常表明中间件没有沿着中间件链传递请求。这个答案已经很老了,也许从那以后发生了一些变化,这可能会导致您目睹的行为。
    • 我独立地发现了这一点,但你是/是正确的。 CORS 模块正在停止整个事情。老实说,restify 并没有给我留下深刻的印象。
    猜你喜欢
    • 2017-06-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 2020-11-26
    • 2020-07-20
    • 1970-01-01
    相关资源
    最近更新 更多