json - 如何在 Express 应用程序中使用 JSON POST 数据

标签 json node.js express

我正在向我的服务器发送以下 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/

相关文章:

mysql - Sequelize MySql 等效 ORM 查询

c# - 如何获取列表列表中的特定记录

json - 如何在JWT Header中设置JWT类型

javascript - JSON 与序列化有何关系?

php - 显示包含来自数据源的信息的 Google 图表

node.js - node-cron 无法正常工作?

linux - ( Node )达到最大文件限制?

javascript - 在没有适当功能的情况下开 Jest 测试 Lambda? Node.js

node.js - Node https ssl 你的连接不是私有(private)错误

node.js - Knex.js 多链式查询