簡體   English   中英

如何使用Express在Node.js中打印響應體(或POST時的請求體)?

[英]How to print the response body (or the request body when POST) in Node.js using Express?

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);

我正在使用POSTMAN for Chrome瀏覽器向/ api /公司發出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
});

你想打印Request body而不是Response(當然沒有設置)。 如果它解決了您的問題,請告訴我。

[編輯]

既然你問我怎么做,可能你應該注意到使用console.log不是我在生產中記錄的東西。 相反,我會使用像bunyan這樣的日志庫,它是可擴展的,並且具有僅json日志記錄功能。 我喜歡他們的願景,即日志應該是機器而不是人類,順便提一下他們還提供了一個二進制工具來以更人性化的格式打印JSON。 它是可擴展的,您可以找到許多插件(稱為“流”),如果您需要這種功能,它們也會記錄到日志聚合器和第三方服務。

呃,當然也有很多其他有效的替代品在那里

[根據OP評論更新]

我想我現在明白你想要實現的目標。 您應該在生成響應after實際查看響應。 你試圖打印的東西甚至沒有觸及響應對象,所以不應該修改它(除非你有一些中間件為你做這個 - 比如放一些標題 - )。 請參閱諸如on-finished之類的庫,您將在將其發送到客戶端之前獲得響應對象。

你沒有明確說明你的expressnode版本所以我只能猜測,但試一試。

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

您也可以在處理程序之后立即放置另一個中間件,並使用響應集和日志傳遞旁邊的請求(快速路由器是基於堆棧的,因此除非您終止請求,否則您可以傳遞多個處理程序)。

順便說一句,我只是嘗試使用Node.js API或我發布給你的庫。

如果我明白你的意圖,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM