我正在向我的服务器发送以下 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
对象用于将 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 的早期版本 (< 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"}
关于json - 如何在 Express 应用程序中使用 JSON POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10005939/