gpt4 book ai didi

javascript - restify.serveStatic 不处理默认文档

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:31 25 4
gpt4 key购买 nike

我有一个基于 Node 和 Restify 插件的用 JavaScript 编写的 REST 应用程序。

我设置了一些 REST 函数:

var server = restify.createServer();
server.use(restify.bodyParser());
server.get('/person/:id', getPerson);
server.get('/group/:id', getGroup);

我还想提供一些静态文件,并且希望可以从 http://server/admin/

访问它们

我有以下源代码来实现这一点:

server.get(/\/admin\/?.*/, restify.serveStatic({directory: '/var/www/node/app/html/', default: 'index.html'}));

/var/www/node/app/html/包含一个名为“admin”的文件夹,该文件夹包含一个名为index.html 的文件,以下是文件夹结构:

html
└── admin
├── img
│   ├── icon1.png
│   ├── icon2.png
│   ├── icon3.png
└── index.html

如果我尝试访问http://server/admin/,我将收到以下错误:

{"code":"ResourceNotFound","message":"/admin/"}

以下路径工作正常http://server/admin/index.html。我还可以访问 http://server/admin/img/icon1.png

综上所述,serveStatic 的默认设置似乎存在问题。

我使用restify 2.6.0,我知道有更新的版本可用,但由于后来的Restify版本上发生了一些其他事情,我目前无法升级。

最佳答案

尝试此解决方法:

var restify = require("restify");

var server = restify.createServer(); // create server

var defaultDoc = "index.html"; // your default document

server.pre(restify.pre.sanitizePath()); // sanitize paths (e.g. "/admin/" will result in "/admin")
server.use(restify.bodyParser()); // body parser

// route "/admin" requests to "/admin/index.html"
server.use(function(req, res, next){
req.url = (req.url === "/admin" ? "/admin/" + defaultDoc : req.url);
return next();
});

// your routes...
server.get("/person/:id", getPerson);
server.get("/group/:id", getGroup);

// route for static files
server.get(/\/admin\/?.*/, restify.serveStatic({
"default": defaultDoc,
"directory": "/var/www/node/app/html"
}));

server.listen(8080, "0.0.0.0");

关于javascript - restify.serveStatic 不处理默认文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23455207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com