繁体   English   中英

express-子域的路由

[英]Routing of express-subdomain

我正在使用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' **

我创建了代码示例来解决您的问题: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得到了我的答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM