簡體   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