【发布时间】:2015-10-08 12:46:51
【问题描述】:
使用 NodeJs 和 Express 构建 REST API:我的目标是实现 2 个最简单的Middlewares:
- 第一个将记录传入的请求
- 第二个将记录处理后的响应(即
JSON)
第一个中间件(在 app.js 中)
function logReqMiddleware(req, res, next) {
log.info('>>> %s at %s', req.method, req.path);
next();
}
第二个中间件(在app.js中)
function logResponseMiddleware(req, res, next) {
log.info('<<< %s (%s)', JSON.stringify(res), res.status);
next();
}
控制器函数(在apiController.js中)
export var router = express.Router();
router.get('/', foo);
function foo(req, res, next) {
res.status(200).json({ stupidExample: true });
next();
}
构建应用程序(app.js)
var app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(logReqMiddleware);
app.use('/api', apiController.router);
app.use(logResponseMiddleware);
var server = app.listen(3000, function(){ log.info('running'); });
现在,在localhost:3000/api 提出请求说:can't set headers after they are sent; this is the related super cool response我的问题是,用json()写json数据并添加第二个中间件是不是不兼容?我该如何解决这个问题?
【问题讨论】:
标签: javascript node.js express http-headers middleware