один запрос GET, но перехватывается несколькими функциями .get в express, node.js - PullRequest
0 голосов
/ 08 октября 2019

Клиент только что отправил один запрос, но несколько функций .get перехватили запрос.

Вот мой код.

const app = express()

app.get('/', (req, res) => {
    console.log('home');
    res.send('home');
});

app.get('/:var1', (req, res) => {
    console.log('var1');
    res.send('var1');
});

app.get('/:var1/:var2', (req, res) => {
    console.log('var2');
    res.send('var2');
});

app.listen(4000, () => {
    console.log('listening in 4000')
});

То, что я ожидал, было

when /:
 console: home
 browser: home
when /foo:
 console: var1
 browser: var1
when /foo/bar:
 condole: var2
 browser: var2

Однако фактический результат был

when /:
 console: home and var1
 browser: home
when /foo:
 console: var1 and var1
 browser: var1
when /foo/bar:
 condole: var2 and var1
 browser: var2

Если результат был из-за NonBlocking-IO, почему там var1 два раза? И почему браузер получил только один ответ? Как я могу изменить результат с помощью экспресс-маршрутизации?

1 Ответ

0 голосов
/ 08 октября 2019

Вышеупомянутое поведение - экспресс-маршрутизация.

С точки зрения проектирования вам не нужно 3 различных маршрута для простого изменения параметров

вы можете перейти с

const app = express()

app.get('/?var1=12&var2=34', (req, res) => {
    console.log('home');
     var params = req.query.var1.
    res.send('home');
});

app.listen(4000, () => {
    console.log('listening in 4000')
});

Вы можете обрабатывать все по одному маршруту

...