这是我的代码
var express=require("express");
var app=express();
var port=8181;
app.use(express.static(__dirname));
app.listen(port);
正确提供静态文件
我想在请求扩展名为.xls的文件时记录
我怎样才能实现它?
答案 0 :(得分:14)
path
核心模块为您提供了处理此问题的工具。因此,只需将此逻辑放在静态中间件之前的中间件中,例如:
var express = require("express");
var path = require("path");
var app = express();
var port = 8181;
app.use(function (req, res, next) {
var filename = path.basename(req.url);
var extension = path.extname(filename);
if (extension === '.css')
console.log("The file " + filename + " was requested.");
next();
});
app.use(express.static(__dirname));
app.listen(port);
答案 1 :(得分:1)
只做
var express=require("express");
var app=express();
var port=8181;
app.use(function(req, res, next) {
// check for .xls extension
console.log(req.originalUrl);
next();
}, express.static(__dirname));
app.listen(port);
答案 2 :(得分:1)
您想记录 serve-static (express.static
)给出的响应。有几种方法可以做到这一点。
如果在app.use
之前,您可以放置(express.static
)记录请求的中间件。 Rodrigo Medeiros' answer执行此操作。但是通过这种方式,当 serve-static 中间件的选项更改时,您必须重写检查代码,这可能是一个维护问题。
express.static
;从中泄漏信息。好吧,express.static
知道它能提供最好的文件。不幸的是,它并没有让我们知道并记录它。但这有一个技巧:the setHeaders
option,这是一个回调函数,据说可以用来设置自定义响应头。当express.static
做出响应并获得足够的信息以记录您想要的内容时,就会调用它。
express.static