2017-03-26 2 views
0
//app.js 
var app = require('express')(); 
app.use('/test', require('./test')); 



//test/index.js 
var router = require('express').Router(); 

router.get('/test', function (req, res) { 
    res.status(200).send("success"); 
}); 
module.exports = routes; 

Warum muss der Pfad in app.use und router.get angegeben werden? Wenn ich stattdessen einfach app.use('/', require('./test')); setze, scheint es immer noch gut zu funktionieren.Warum den Pfad in app.use angeben?

Antwort

1

Mit der Angabe router.get('/test', function (req, res) wird Ihre Handler-Methode jede Anfrage behandeln, die in/test endet. Hängt davon ab, wo der Router use() ist.

app.use (withPath [Rückruf ...]

Die Middleware-Funktionen tests am speficied Weg montieren /test So test Ihre Middle werden ausgeführt, wenn die Basis-Anforderungs-URL-Pfad Spiel . Wenn Sie diese

1

ändern:

app.use('/test', require('./test')); 

dies:

app.use('/', require('./test')); 

dann haben Sie die gleiche Funktionalität wie vor die Middleware durch die ./test Modul auf den Routen exportiert zu verwenden, die mit /test beginnen, so dass Sie, dass alles erleben die gleiche Arbeit, aber das Middleware auch jeden anderen Weg nicht notwendigerweise beginnend mit /test behandeln, die, je nachdem, was es tut und wie es funktioniert, kann oder nicht sein, was Sie wollen.

Wenn Sie einen Pfad im app.use()-Aufruf verwenden, beschränken Sie die Middleware, die Sie nur auf diesen Pfad laden. Wenn Sie / verwenden, dann ist es wie "jeden Pfad" sagen, da jeder Pfad mit dem Schrägstrich beginnt - sogar Pfade, die für URLs ohne den Schrägstrich angefordert werden, werden immer noch mit Schrägstrich angefordert, z. mit HTTP/1.1 etwas wie:

GET/HTTP/1.1 
Host: localhost 
Verwandte Themen