我将以下 JSON 字符串发送到我的服务器。
( { id = 1; name = foo; }, { id = 2; name = bar; } )
在服务器上我有这个。
app.post('/', function(request, response) { console.log("Got response: " + response.statusCode); response.on('data', function(chunk) { queryResponse+=chunk; console.log('data'); }); response.on('end', function(){ console.log('end'); }); });
当我发送字符串时,它显示我收到了 200 响应,但其他两种方法从未运行。这是为什么?
我认为您将response对象的使用与request.
response
request
该response对象用于将 HTTP 响应发送回调用客户端,而您想要访问request. 请参阅此答案,它提供了一些指导。
如果您使用有效的 JSON 并使用 POST Content-Type: application/json,那么您可以使用bodyParser中间件来解析请求正文并将结果放入request.body您的路由中。
Content-Type: application/json
bodyParser
request.body
Express 4.16+ 的更新
从 4.16.0 版开始,可以使用新的express.json()中间件。
express.json()
var express = require('express'); var app = express(); app.use(express.json()); app.post('/', function(request, response){ console.log(request.body); // your JSON response.send(request.body); // echo the result back }); app.listen(3000);
为 Express 4.0 - 4.15 更新
正文解析器在 v4 之后被拆分成自己的 npm 包,需要单独安装npm install body-parser
npm install body-parser
var express = require('express') , bodyParser = require('body-parser'); var app = express(); app.use(bodyParser.json()); app.post('/', function(request, response){ console.log(request.body); // your JSON response.send(request.body); // echo the result back }); app.listen(3000);
对于 Express 的早期版本 ( < 4)
var express = require('express') , app = express.createServer(); app.use(express.bodyParser()); app.post('/', function(request, response){ console.log(request.body); // your JSON response.send(request.body); // echo the result back }); app.listen(3000);
沿着以下路线进行测试:
$ curl -d '{"MyKey":"My Value"}' -H "Content-Type: application/json" http://127.0.0.1:3000/ {"MyKey":"My Value"}