Javascript 如何使用Express打印Node.js中的响应正文(或发布时的请求正文)?

Javascript 如何使用Express打印Node.js中的响应正文(或发布时的请求正文)?,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,我正在使用POSTMAN for Chrome浏览器向/api/公司发出GET请求。但我的控制台没有任何输出。我做错了什么?或者,您将如何执行此操作?在您的代码中,您正在执行此操作 var express = require('express'); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); mongoose.Promise = require('bluebird'); mongoo

我正在使用POSTMAN for Chrome浏览器向/api/公司发出GET请求。但我的控制台没有任何输出。我做错了什么?或者,您将如何执行此操作?

在您的代码中,您正在执行此操作

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);
虽然它应该是

router.get('/companies', function(req, res){
  console.log(res.body);
});
您希望打印请求正文而不是响应(当然,这是未设置的)。 让我知道它是否解决了你的问题

[编辑]

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

当然还有很多其他有效的选择

[根据OP评论更新]

我想我现在明白你想要实现什么了。 在生成响应后,您应该查看它的实际响应。如果您试图打印一些您甚至没有接触到响应对象的内容,那么就不应该对其进行修改(除非您有一些中间件为您这样做,例如放置一些标题)。 在将响应对象发送到客户机之前,请参考库(如),您将获得响应对象

您没有明确说明您的
express
node
版本,因此我只能猜测,但请尝试一下

您也可以使用plain node.js

此外,您可能只需在处理程序后面放置另一个中间件,并使用响应集和日志将请求传递到它旁边(express router是基于堆栈的,因此除非您终止请求,否则您可以在多个处理程序中传递请求)

顺便说一句,我想试试Node.js API或我发布给您的库


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

您希望
request.body
GET
请求有什么作用?@robertklep我想打印从GET请求返回的JSON对象。例如,
[{{u id]:--一些值----,“car”:“Porsche”,“model”:“Cayman”}]
这不是Express提供的现成功能,您需要一个特定的中间件来实现它(比如
Express拦截器
Express mung
Express buffer response
)。哦,好的。非常感谢。我正忙着换一种方式。实际上我需要验证,我只是在几个小时后才发现了validations这个词。
req.body
不起作用。我需要打印返回的JSON对象。事实上,我需要运行验证器,但一旦我得到JSON对象,我想我会在以后找出这一部分@LexAgostoI只需要打印我要发布的JSON对象。我不确定你建议的方法。这是我的问题,但对我来说不起作用@对不起,我想你需要说得更清楚一些。您是否希望打印端点返回的内容(即响应)或从客户端收到的内容(即请求)。现在我还不清楚。我也开始认为你的要求是错误的。可能您缺少“Content encoding”标题,如果未将其设置为“application/json”,主体解析器将不会尝试解析任何json。另外请注意,您正在对POST请求使用GET处理程序(您多次声明)。你不应该。真正地真糟糕。
router.get('/companies', function(req, res){
  console.log(req.body); // req, not res altough it shouldn't be set for GET
});