【问题标题】:restify.serveStatic not handling default documentrestify.serveStatic 不处理默认文档
【发布时间】:2014-10-13 21:36:00
【问题描述】:

我有一个基于 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 版本上发生了变化,我目前无法升级。

【问题讨论】:

    标签: javascript node.js rest restify


    【解决方案1】:

    试试这个解决方法:

    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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 2015-05-02
      • 1970-01-01
      • 2015-10-14
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多