Udd*_*uri 5 javascript mongoose node.js 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);
Run Code Online (Sandbox Code Playgroud)
我正在使用 Chrome 浏览器的 POSTMAN 向 /api/companies 发出 GET 请求。但我的控制台没有得到任何输出。我究竟做错了什么?或者你会怎么做?
在你的代码中你正在做
router.get('/companies', function(req, res){
console.log(res.body);
});
Run Code Online (Sandbox Code Playgroud)
虽然应该是
router.get('/companies', function(req, res){
console.log(req.body); // req, not res altough it shouldn't be set for GET
});
Run Code Online (Sandbox Code Playgroud)
您想要打印请求正文而不是响应(当然,这是未设置的)。让我知道它是否解决了您的问题。
[编辑]
既然您问我该怎么做,您可能应该注意,使用console.log并不是我在生产中记录某些内容的方式。相反,我会使用像Bunyan这样的日志库,它是可扩展的并且具有仅 json 日志记录功能。我喜欢他们的愿景,即日志应该是针对机器而不是针对人类的,顺便说一句,他们还提供了一个二进制工具,可以以更人性化的格式漂亮地打印 JSON。它是可扩展的,如果您需要这种功能,您可以找到很多插件(称为“流”),它们还可以记录日志聚合器和第三方服务。
呃,当然还有很多其他有效的选择。
[根据OP评论更新]
我想我现在明白你想要实现的目标了。您应该查看实际after生成的响应。当您尝试打印某些内容时,您甚至没有触及响应对象,因此不应修改它(除非您有一些中间件为您执行此操作 - 例如放置一些标头 - )。参考诸如on-finished之类的库,您将在将响应对象发送到客户端之前获得响应对象。
您没有明确说明您的express版本node,所以我只能猜测,但请尝试一下。
您还可以使用普通的node.js API。
此外,您也可以在处理程序之后放置另一个中间件,并在其旁边传递带有响应集的请求,然后仅记录(快速路由器是基于堆栈的,因此除非您终止请求,否则您可以传入多个处理程序)。
顺便说一句,我只是尝试我们的 Node.js API 或我发布给您的库。
如果我明白你的意思,请告诉我。
| 归档时间: |
|
| 查看次数: |
21871 次 |
| 最近记录: |