我认为你混淆了response
对象与request
.
The response
对象用于将 HTTP 响应发送回调用客户端,而您想要访问request
。看到这个answer https://stackoverflow.com/a/4696338/112196这提供了一些指导。
如果您使用有效的 JSON 并使用以下方式发布它Content-Type: application/json
,那么您可以使用bodyParser https://github.com/expressjs/body-parser中间件解析请求体并将结果放入request.body
您的路线。
Express 4.16+ 的更新
从版本 4.16.0 开始,新的express.json() http://expressjs.com/en/4x/api.html#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"}