Node.js 使用nodejs express的curl-POST数据

Node.js 使用nodejs express的curl-POST数据,node.js,curl,express,Node.js,Curl,Express,我正在尝试模拟对基于Express for nodeJS的服务器应用程序的POST请求。它运行在localhost:3000(JS Fiddle:) 我使用以下卷曲线: curl -X POST -d "{\"name\": \"Jack\", \"text\": \"HULLO\"}" -H "Content-Type: application/json" http://localhost:3000/api 但是,请获取错误消息: Cannot read property 'text'

我正在尝试模拟对基于Express for nodeJS的服务器应用程序的POST请求。它运行在
localhost:3000
(JS Fiddle:)

我使用以下卷曲线:

 curl -X POST -d "{\"name\": \"Jack\", \"text\": \"HULLO\"}" -H "Content-Type: application/json" http://localhost:3000/api 
但是,请获取错误消息:

Cannot read property 'text' of undefined
知道我做错了什么吗

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


curlhttp://localhost:3000/api

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

您是否使用了
d
d


josh3736的答案已经过时了。Express不再与body解析器中间件一起提供。要使用它,必须先安装:

npm install --save body-parser
然后要求并使用:

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

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

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

另请参见

非常有效,谢谢!每当我想处理POST数据时,是否需要将这一行添加到服务器代码中?难道你不知道有什么好的在线资源可以学习更多关于这方面的知识吗?
bodyParser
是可选的中间件。默认情况下,Express不解析请求主体。因此,是的,您需要
使用
bodyParser
(每个应用程序一次),或者如果您不想/不需要为每个请求解析请求主体,您可以将其包含在单个路由的中间件链中。要了解更多信息,Express and是一个很好的起点。
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());