【问题标题】:curl with nodejs express - POST datacurl with nodejs express - POST数据
【发布时间】:2014-04-01 18:37:07
【问题描述】:

我正在尝试模拟对基于 Express for nodeJS 的服务器应用程序的 POST 请求。它在localhost:3000 上运行(JS Fiddle:http://jsfiddle.net/63SC7/

我使用以下 CURL 行:

 curl -X POST -d "{\"name\": \"Jack\", \"text\": \"HULLO\"}" -H "Content-Type: application/json" http://localhost:3000/api 

但得到错误信息:

Cannot read property 'text' of undefined

任何想法我做错了什么?

注意:我可以使用此行成功发出 GET 请求:

curl http://localhost:3000/api

【问题讨论】:

    标签: node.js curl express


    【解决方案1】:

    假设您正在尝试req.body.text

    你有used bodyParser吗?

    app.use(express.bodyParser());
    

    【讨论】:

    • 非常感谢!每当我想使用 POST 数据时,是否需要将此行添加到服务器代码中?不要以为您知道一个很好的在线资源来了解更多信息吗?
    • bodyParser 是可选的中间件。默认情况下,Express 不解析请求正文。所以是的,您需要use bodyParser(每个应用程序一次),或者如果您不想/不需要为每个请求解析请求主体,您可以将其包含在单个路由的中间件链中。要了解更多信息,Express guideAPI reference 是一个很好的起点。
    【解决方案2】:

    josh3736 的答案已过时。 Express 不再附带 body-parser 中间件。要使用它,您必须先安装它:

    npm install --save body-parser
    

    然后要求并使用:

    let bodyParser = require('body-parser');
    app.use(bodyParser());
    

    【讨论】:

      【解决方案3】:

      只是为了更新 Thordarson 的答案(现已弃用),目前推荐的方式是:

      app.use(bodyParser.urlencoded({extended: true}));
      app.use(bodyParser.json());
      

      另见https://stackoverflow.com/a/24330353/3810493

      【讨论】:

        猜你喜欢
        • 2016-02-13
        • 2013-12-28
        • 2021-06-19
        • 2016-02-25
        • 1970-01-01
        • 2022-11-28
        • 2016-07-09
        • 1970-01-01
        • 2020-12-05
        相关资源
        最近更新 更多