我将以下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响应,但其他两个方法从未运行。为什么呢?
我认为您将响应对象的使用与请求的使用混为一谈了。
响应对象用于将HTTP响应发送回调用客户端,而您希望访问请求正文。请看这个答案,它提供了一些指导。
如果您使用的是有效的JSON,并且使用Content-Type: application/ JSON发布它,那么您可以使用bodyParser中间件来解析请求体并将结果放入请求中。你的路线的主体。
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);
快速4.0 - 4.15更新
Body parser在v4之后被拆分为自己的npm包,需要单独安装npm
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"}