【问题标题】:Routing of express-subdomain快速子域的路由
【发布时间】:2021-02-13 02:43:10
【问题描述】:

我正在使用express-subdomain

通过子域处理请求的路由器与不使用子域处理请求的路由器相同。

我知道我的“app.js”设置有误。 我怎么解决这个问题?我想知道一个好方法。像这样:

app.use(subdomain('banana', ('/about', bananaRouter);

如果这是一个简单的问题,请原谅我。我在我的国家找不到任何相同的问题。对不起。

// /app.js
const appleRouter = require('./routes/apple/index');
const appleAboutRouter = require('./routes/apple/about');
const applePriceRouter = require('./routes/apple/price');

const bananaRouter = require('./routes/banana/index');
const bananaAboutRouter = require('./routes/banana/about');
const bananaPriceRouter = require('./routes/banana/price');

const grapeRouter = require('./routes/grape/index');
const grapeAboutRouter = require('./routes/grape/about');
const grapePriceRouter = require('./routes/grape/price');

app.use(subdomain('banana', bananaRouter));
app.use(subdomain('grape', grapeRouter));

app.use('/', appleRouter);
app.use('/about', appleAboutRouter);
app.use('/price', applePriceRouter);

app.use('/', bananaRouter);
app.use('/about', bananaAboutRouter);
app.use('/price', bananaPriceRouter);

app.use('/', grapeRouter);
app.use('/about', grapeAboutRouter);
app.use('/price', grapePriceRouter);
// /routes/apple/index
const express = require('express');
const router = express.Router();

router.get('/', function (req, res, next) {
    res.send('I am Apple');
});
module.exports = router;

// /routes/apple/about
const express = require('express');
const router = express.Router();

router.get('/view', function (req, res, next) {
    res.send("Apples don't taste good.");
});
module.exports = router;

// /routes/apple/price
const express = require('express');
const router = express.Router();

router.get('/view', function (req, res, next) {
    res.send("$ 1");
});
module.exports = router;
// /routes/banana/index
const express = require('express');
const router = express.Router();

router.get('/', function (req, res, next) {
    res.send('I am Banana');
});
module.exports = router;

// /routes/banana/about
const express = require('express');
const router = express.Router();

router.get('/view', function (req, res, next) {
    res.send("Bananas are delicious.");
});
module.exports = router;

// /routes/banana/price
const express = require('express');
const router = express.Router();

router.get('/view', function (req, res, next) {
    res.send("$ 2");
});
module.exports = router;

// /routes/grape/index
const express = require('express');
const router = express.Router();

router.get('/', function (req, res, next) {
    res.send('I am Grape');
});
module.exports = router;

// /routes/grape/about
const express = require('express');
const router = express.Router();

router.get('/view', function (req, res, next) {
    res.send("Grapes are purple.");
});
module.exports = router;

// /routes/grape/price
const express = require('express');
const router = express.Router();

router.get('/view', function (req, res, next) {
    res.send("$ 3");
});
module.exports = router;

预期行为 2:

// http://localhost.com:3000/
I am Apple
// http://localhost.com:3000/about/view
Apples don't taste good.
// http://localhost.com:3000/price/view
$ 1

// http://banana.localhost.com:3000/
I am Banana
// http://banana.localhost.com:3000/about/view
Apples don't taste good. ** not Bananas are delicious. **
// http://banana.localhost.com:3000/price/view
'$ 1' ** not '$ 2' **

【问题讨论】:

    标签: javascript node.js express express-subdomain


    【解决方案1】:

    我创建了解决您问题的代码示例:D 首先,您需要在 /etc/hosts 文件中添加几行。示例

    127.0.0.1 banana.myapp.dev
    127.0.0.1 myapp.dev
    

    然后尝试运行我为您编写的这个脚本:

    //connect express
    var express = require('express');
    var subdomain = require('express-subdomain');
    var app = express();
    
    app.use(express.json());
    
    //set sub routing
    app.sub_banana = express.Router();
    app.use(subdomain('banana', app.sub_banana));
    
    //top level routing
    app.get('/', (req, res) => {
      res.send('I am Apple')
    });
    
    app.get('/about', (req, res) => {
      res.send('Apples don\'t taste good.')
    });
    
    //subdomain routing
    app.sub_banana.get('/', (req, res) => {
      res.send('I am Banana')
    });
    
    app.sub_banana.get('/about', (req, res) => {
      res.send('Apples don\'t taste good.  ** not Bananas are delicious. **')
    });
    
    //start server
    var http = require('http');
    
    var port = 3000
    app.set('port', port);
    
    var server = http.createServer(app);
    
    server.listen(port);

    如果您需要更多信息,请告诉我。我从这个资源https://exceed-team.com/tech/express-subdomain得到了答案@

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多