Webserwisy udostępniają zasoby takie jak strony HTML, skrypty, obrazy itp. na różnych trasach.
Następująca funkcja służy do definiowania tras w aplikacji Express –
app.method(path, handler)
Ta METODA może być zastosowana do dowolnego z czasowników HTTP – get, set, put, delete. Istnieje również metoda alternatywna, która wykonuje się niezależnie od typu żądania.
Path jest trasą, na której zostanie uruchomione żądanie.
Handler jest funkcją wywołania zwrotnego, która wykonuje się, gdy pasujący typ żądania zostanie znaleziony na odpowiedniej trasie. Na przykład,
var express = require('express');var app = express();app.get('/hello', function(req, res){ res.send("Hello World!");});app.listen(3000);
Jeśli uruchomimy naszą aplikację i przejdziemy do localhost:3000/hello, serwer otrzyma żądanie get na trasie „/hello”, nasza aplikacja Express wykona funkcję callback dołączoną do tej trasy i wyśle „Hello World!” jako odpowiedź.
Możemy również mieć wiele różnych metod na tej samej trasie. Na przykład,
var express = require('express');var app = express();app.get('/hello', function(req, res){ res.send("Hello World!");});app.post('/hello', function(req, res){ res.send("You just called the post method at '/hello'!\n");});app.listen(3000);
Aby przetestować to żądanie, otwórz terminal i użyj cURL do wykonania następującego żądania –
curl -X POST "http://localhost:3000/hello"
Specjalna metoda, all, jest dostarczana przez Express do obsługi wszystkich typów metod http na danej trasie przy użyciu tej samej funkcji. Aby skorzystać z tej metody, spróbuj wykonać następujące czynności.
app.all('/test', function(req, res){ res.send("HTTP method doesn't have any effect on this route!");});
Metoda ta jest zwykle używana do definiowania oprogramowania pośredniczącego, które omówimy w rozdziale poświęconym oprogramowaniu pośredniczącemu.
Routery
Definiowanie tras, jak powyżej, jest bardzo żmudne w utrzymaniu. Aby oddzielić trasy od naszego głównego pliku index.js, użyjemy Express.Router. Utwórz nowy plik o nazwie things.js i wpisz w nim następujące elementy.
var express = require('express');var router = express.Router();router.get('/', function(req, res){ res.send('GET route on things.');});router.post('/', function(req, res){ res.send('POST route on things.');});//export this router to use in our index.jsmodule.exports = router;
Teraz, aby użyć tego routera w naszym index.js, wpisz następujące elementy przed wywołaniem funkcji app.listen.
var express = require('Express');var app = express();var things = require('./things.js');//both index.js and things.js should be in same directoryapp.use('/things', things);app.listen(3000);
Wywołanie funkcji app.use na trasie '/things' dołącza router things do tej trasy. Teraz jakiekolwiek żądania, które nasza aplikacja otrzyma na '/things', będą obsługiwane przez nasz router things.js. Trasa '/' w things.js jest w rzeczywistości podtrasą trasy '/things'. Odwiedź localhost:3000/things/ i zobaczysz następujące wyjście.
Routery są bardzo pomocne w oddzielaniu problemów i utrzymywaniu odpowiednich części naszego kodu razem. Pomagają w budowaniu łatwego w utrzymaniu kodu. Powinieneś zdefiniować swoje trasy odnoszące się do encji w pojedynczym pliku i dołączyć go za pomocą powyższej metody do swojego pliku index.js.