我对Express如何提供文件感到有些困惑。
目前我有一个/public
目录来保存客户端资源。我使用
app.use(express.static(__dirname + '/public'));
我的印象是此目录中的任何内容都是公开的,并且该HTTP方法会默认/public
作为访问的根目录(除非由Express手动路由)。
在此目录中的任何文件上使用GET都没有问题(客户端脚本,图像等等。但是,当我尝试在此目录中POST文件时,我得到404.我是否需要手动路由所有POST请求ala < / p>
app.post(route, callback)
谢谢你的帮助
答案 0 :(得分:6)
连接,因此,Express,静态中间件只接受GET
个请求。请参阅here。
如果您尝试使用POST覆盖公共文件,则需要为此创建单独的路径。
答案 1 :(得分:2)
仅限static
middleware supports GET
and HEAD
method
if ('GET' != req.method && 'HEAD' != req.method) return next();
所以,是的,如果你想能够POST
匹配静态文件的路径,你需要自己定义处理程序。
答案 2 :(得分:0)
我找到了一种发布静态
的简便方法app.use(staticPath, function(req, res, next){
if ('POST' != req.method){
next()
}else{
req.method = 'GET'
next()
}
})
app.use(staticPath, express.static('./static'))
效果很好,哈哈