在Restify中提供子路径文件

时间:2019-07-31 18:02:43

标签: node.js restify

我正在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,因此正则表达式路由不起作用。

1 个答案:

答案 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“路径可以处理顶层路径,但不会。