почему URL-адрес sla sh работает со всеми другими URL-адресами в промежуточном программном обеспечении NodeJS? - PullRequest
0 голосов
/ 20 июня 2020

Почему я ввожу http://localhost:3000/product в браузере, на выходе будут как '/', так и '/product'?

Пожалуйста, посмотрите на этот фрагмент кода.

const express = require('express');
const app = express();


// http://localhost:3000/product
app.use('/product', (req, res, next)=>{
    console.log('In product page');
    res.send('<h1>Product Page</h1>');
});


// http://localhost:3000/
app.use('/', (req, res, next)=>{
    console.log('In main page');
    res.send('<h1>Main Page</h1>');
});


app.listen(3000);

Это изображение - результат моего приложения.

Output

Ответы [ 3 ]

2 голосов
/ 20 июня 2020

Это могло иметь несколько причин. Я думаю, что браузер запрашивает http://localhost:3000/favicon.ico автоматически после product.html, что запускает маршрут use('/', ...).

Возможно, вам стоит использовать app.all(...) вместо app.use(...), чтобы избежать этого «подстановочного знака» на каждом пути, который должен быть страницей 404.

1 голос
/ 20 июня 2020

Потому что в express все, что вы определяете с помощью app.use (), является промежуточным программным обеспечением, и оно всегда выполняется до тех пор, пока не будет определен какой-либо путь,

app.use('/', (req, res, next)=>{
    console.log('In main page');
    res.send('<h1>Main Page</h1>');
});

всегда будет выполняться, потому что он содержит root путь и каждый URL-адрес имеет root путь

Проверьте эту ссылку для получения дополнительной информации https://expressjs.com/en/4x/api.html#app .use

Вы должны определить свою маршрутизацию с помощью express маршрутизатора с помощью приложения .get ("/") или app.post ("/"), и это поможет для получения дополнительной информации https://expressjs.com/en/guide/routing.html

1 голос
/ 20 июня 2020

Метод app.use () используется для привязки промежуточного программного обеспечения уровня приложения. Не для приема запроса GET, как вы ожидаете.

Вы должны использовать

    // http://localhost:3000/product
    app.get('/product', (req, res)=>{
        console.log('In product page');
        res.send('<h1>Product Page</h1>');
    });


    // http://localhost:3000/
    app.get('/', (req, res)=>{
        console.log('In main page');
        res.send('<h1>Main Page</h1>');
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...