【问题标题】:Serve subpath file in Restify在 Restify 中提供子路径文件
【发布时间】:2019-08-01 02:32:27
【问题描述】:

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

【问题讨论】:

    标签: node.js restify


    【解决方案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" 路径可以处理顶级路径,但事实并非如此。

    【讨论】:

    • 他们放弃了一些如此基本的东西真是太奇怪了,我会用这个
    • 我只工作了一层,不幸的是它对子文件夹不起作用。我仍将它用于我当前的项目,但我不想将其标记为正确答案
    • 我认为当我在这里测试它时它可以工作。但我才意识到我使用 express 对其进行了测试!我会修改答案,或者干脆干掉它!
    猜你喜欢
    • 2014-02-11
    • 2013-10-17
    • 2016-04-17
    • 1970-01-01
    • 2013-03-06
    • 2020-09-11
    • 2013-10-19
    • 2021-03-22
    • 1970-01-01
    相关资源
    最近更新 更多