我认为您将response 对象的使用与request 的使用混为一谈。
response 对象用于将 HTTP 响应发送回调用客户端,而您想要访问 request 的主体。请参阅此answer,它提供了一些指导。
如果您使用有效的 JSON 并使用 Content-Type: application/json 发布它,那么您可以使用 bodyParser 中间件来解析请求正文并将结果放在您的路由的 request.body 中。
Express 4.16+ 更新
从 4.16.0 版开始,可以使用新的 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
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 的早期版本 (
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"}