ExpressJS | app.get (), кажется, не работает, когда находится ниже определения app.use () - PullRequest
1 голос
/ 04 февраля 2020

Из приведенного ниже кода попадание в '/ dig' привело к ожидаемому ответу. Но '/ dev' не работает и вместо этого возвращает ответ по умолчанию, определенный из app.use (). Однако я понял, что когда я поместил определение app.get ('/ dev' ....) Поверх app.use (), оно будет работать. Я не уверен, почему

app.get('/dig',(req,res,next)=>{
    res.end('Sending DIG');
});

app.use((req,res,next) =>{
        console.log("testing 123:");
        res.statusCode = 200;
        res.setHeader('Content-Type','text/html');
        res.end('<html><title>Express</title><head>Express App response</head><body><p>Hello, Express</p></body></html>');
    });

app.get('/dev',(req,res,next)=>{
    res.statusCode = 201;
    res.send('<html><title></title><head></head><body><p>DEV</p></body></html>');
});

// Это будет работать

app.get('/dig',(req,res,next)=>{
    res.end('Sending DIG');
});

app.get('/dev',(req,res,next)=>{
    res.statusCode = 201;
    res.send('<html><title></title><head></head><body><p>DEV</p></body></html>');
});
app.use((req,res,next) =>{
        console.log("testing 123:");
        res.statusCode = 200;
        res.setHeader('Content-Type','text/html');
        res.end('<html><title>Express</title><head>Express App response</head><body><p>Hello, Express</p></body></html>');
    });

1 Ответ

2 голосов
/ 04 февраля 2020

app.use () выполняется для каждого запроса, но запросы выполняются в порядке, и если app.use () является первым, вам следует избегать отправки ответа в нем, поскольку ответ может быть отправлен только один раз в HTTP-запросе. если вы поймаете ошибку в первом фрагменте кода, он скажет, что: не может отправить заголовки ответа после отправки его клиенту. если вам нужно использовать app.use () до этого, избегайте отправки ответа и используйте функцию next () в промежуточном программном обеспечении, чтобы присутствовали любые другие app.get () или app.post (), они будут вызываться следующим .

app.get('/dig',(req,res,next)=>{
res.end('Sending DIG');
});

app.use((req,res,next) =>{
    console.log("testing 123:");
    next();
   });

app.get('/dev',(req,res,next)=>{
res.statusCode = 201;
res.send('<html><title></title><head></head><body><p>DEV</p></body></html>');
});

Надеюсь, это поможет. УДАЧИ :))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...