基于文件系统目录搜索的动态路由

时间:2016-01-27 18:24:41

标签: node.js express

我想路由到HTML页面而网址中没有“.html”。我试图通过创建一个查看目录的自定义路由器并检查是否存在扩展名为“.html”的文件来实现此目的,如果存在它将路由到该页面。

如果网址包含'/ api',我还需要允许路由器通过'/api'路由。基本上我希望允许用户获取HTML文件,而无需键入文件扩展名并保持所有其他路由完整。

var express = require('express');
var path = require('path');
var fs = require('fs');
var router = express.Router();
var app = express();

router.route('/:id')
    .get(function(req, res) {
        fs.readdir('public/', function(err, items) {
            for (var i=0; i<items.length; i++) {
              if (req.params.id == path.basename(items[i])) {
                app.get(function(req, res) {
                    res.render(items[i]);
                });
            }
          }
        });
    });

router.route('/api')
  .get(function (req, res) { ... })
  .post(function (req, res) { ... });

app.use('/', router);

我也尝试使用express.static,但它也没有用。

fs.readdir('public/', function(err, items) { for (var i=0; i<items.length; i++) { if (path.extname(items[i]) == '.html') { app.use('/' + path.basename(items[i], '.html'), express.static(items[i])); } } });

0 个答案:

没有答案