Node.js 使用nodejs express的curl-POST数据
我正在尝试模拟对基于Express for nodeJS的服务器应用程序的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'
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());