Javascript restify.serveStatic不处理默认文档
我有一个基于node和restify插件用javascript编写的REST应用程序 我设置了一些REST功能:Javascript restify.serveStatic不处理默认文档,javascript,node.js,rest,restify,Javascript,Node.js,Rest,Restify,我有一个基于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/ 我有
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
└── 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");