javascript - 如何使用 Express 在 Node.js 中打印响应主体(或 POST 时的请求主体)?

标签 javascript node.js express mongoose

var express = require('express');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
mongoose.Promise = require('bluebird');


mongoose.connect("mongodb://localhost/placement-process");

var app = express();

app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());

var router = require('./router');
app.use('/api', router);

router.get('/companies', function(req, res){
    console.log(res.body);
});


app.listen(3000);

我正在使用适用于 Chrome 浏览器的 POSTMAN 向/api/companies 发出 GET 请求。但是我的控制台没有得到任何输出。我究竟做错了什么?或者你会怎么做?

最佳答案

在你的代码中你正在做

router.get('/companies', function(req, res){
  console.log(res.body);
});

虽然应该是

router.get('/companies', function(req, res){
  console.log(req.body); // req, not res altough it shouldn't be set for GET
});

您想打印请求主体而不是响应(当然,这是未设置的)。 让我知道它是否解决了您的问题。

[编辑]

既然你问我该怎么做,你可能应该注意到使用 console.log 并不是我在生产环境中记录内容的方式。相反,我会使用像 bunyan 这样的日志库,它是可扩展的,并且具有仅 json 日志记录功能。我喜欢他们的愿景,即日志应该用于机器而不是人类,顺便说一下,他们还提供了一个二进制工具,以更人性化的格式漂亮地打印 JSON。它是可扩展的,您可以找到很多插件(称为“流”),如果您需要这种功能,它们也会记录日志聚合器和第三方服务。

呃,当然还有很多其他有效的替代品 out there .

[根据 OP 评论更新]

我想我现在明白您要实现的目标了。 您应该查看实际 after 生成的响应。在您尝试打印您甚至没有触及响应对象的内容的地方,因此不应修改它(除非您有一些中间件为您做这件事 - 例如放置一些标题 - )。 引用库,例如 on-finished您将在将其发送给客户端之前获得响应对象。

您没有明确说明您的 expressnode 版本,所以我只能猜测,但请尝试一下。

您也可以使用普通的 node.js APIs .

你也可以在你的处理程序之后放置另一个中间件,并在它旁边传递带有响应集的请求,然后只记录(express router 是基于堆栈的,所以除非你终止请求,否则你可以传入多个处理程序) .

顺便说一句,我只是尝试我们的 Node.js API 或我发布给您的库。

如果我理解了您的意思,请告诉我。

关于javascript - 如何使用 Express 在 Node.js 中打印响应主体(或 POST 时的请求主体)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43016731/

相关文章:

node.js - CRUD nodejs/express 服务器 : app. put req.body 为空

javascript - Firebase 功能正在部署,但未显示在控制台中

javascript - 使用 JavaScript 替换功能,所有字符仅出现一次

javascript - 单击标签时单选按钮不检查

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

node.js - Bottender - 添加自定义路由 - Express 服务器

javascript - 如何获取 Bootstrap File Input 插件创建的图像数据

javascript - 在 Javascript 中查找复选框是否获得焦点

node.js - 如何在 Node.js 中实现共享库?

javascript - 包.json : dependency in a local directory?