我正在Node中使用Restify提供静态img文件,这是我的代码:
import * as Restify from "restify";
server.use(Restify.plugins.bodyParser());
server.use(Restify.plugins.queryParser());
server.get("/hostedImages/:file", HostedImagsHandler);
async function HostedImagsHandler(req: Restify.Request, res: Restify.Response, next) {
const path: string = req.params[1];
return next();
}
运行此文件时,我可以提供如下文件:
http://localhost:5512/hostedImages/test.png
但是,我无法提供子目录中的任何文件:
http://localhost:5512/hostedImages/test/test.png
如何为子文件夹提供服务?我正在运行Restify 8.3.3,因此正则表达式路由不起作用。
答案 0 :(得分:1)
他们取消了对版本7中路由的正则表达式支持。您可以通过两种路由来完成所需的操作:
server.get("/hostedImages/:file", HostedImagsHandler);
server.get("/hostedImages/*/:file", HostedImagsHandler);
第一个处理路径如下:
http://localhost:5512/hostedImages/test.png
第二个句柄路径如下:
http://localhost:5512/hostedImages/test/test.png
在该路径下您可以随意嵌套路径。必须按该顺序指定它们,否则顶级处理程序将不起作用。
这似乎是一个极端的情况,但在框架中似乎也很古怪。我希望“” / hostedImages / * /:file“路径可以处理顶层路径,但不会。