ExpressJS - Маршрутизация
Веб-фреймворки предоставляют ресурсы, такие как HTML-страницы, сценарии, изображения и т. Д., По различным маршрутам.
Следующая функция используется для определения маршрутов в приложении Express -
app.method (путь, обработчик)
Этот МЕТОД может быть применен к любому из глаголов HTTP - получить, установить, поместить, удалить. Также существует альтернативный метод, который выполняется независимо от типа запроса.
Путь - это маршрут, по которому будет выполняться запрос.
Обработчик - это функция обратного вызова, которая выполняется, когда на соответствующем маршруте обнаруживается соответствующий тип запроса. Например,
var express = require('express');
var app = express();
app.get('/hello', function(req, res){
res.send("Hello World!");
});
app.listen(3000);
Если мы запустим наше приложение и перейдем в localhost:3000/hello, сервер получает запрос на получение на маршруте "/hello", наше приложение Express выполняет callback функция прикреплена к этому маршруту и отправляет "Hello World!" как ответ.
У нас также может быть несколько разных методов на одном маршруте. Например,
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);
Чтобы проверить этот запрос, откройте свой терминал и используйте cURL для выполнения следующего запроса:
curl -X POST "http://localhost:3000/hello"
Особый метод, all, предоставляется Express для обработки всех типов http-методов на определенном маршруте с использованием одной и той же функции. Чтобы использовать этот метод, попробуйте следующее.
app.all('/test', function(req, res){
res.send("HTTP method doesn't have any effect on this route!");
});
Этот метод обычно используется для определения промежуточного программного обеспечения, которое мы обсудим в главе, посвященной промежуточному программному обеспечению.
Маршрутизаторы
Определение маршрутов, как указано выше, очень утомительно в обслуживании. Чтобы отделить маршруты от наших основныхindex.js файл, мы будем использовать Express.Router. Создайте новый файл с именемthings.js и введите в него следующее.
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.js
module.exports = router;
Теперь используем этот роутер в нашем index.jsвведите следующее перед app.listen вызов функции.
var express = require('Express');
var app = express();
var things = require('./things.js');
//both index.js and things.js should be in same directory
app.use('/things', things);
app.listen(3000);
В app.use вызов функции по маршруту '/things' прикрепляет thingsроутер с этим маршрутом. Теперь все запросы, которые наше приложение получает в '/ things', будут обрабатываться нашим маршрутизатором things.js. В'/'route в файле things.js на самом деле является подмаршрутом для '/ things'. Посетите localhost: 3000 / things /, и вы увидите следующий результат.
Маршрутизаторы очень помогают в разделении проблем и сохранении вместе соответствующих частей нашего кода. Они помогают в создании поддерживаемого кода. Вы должны определить свои маршруты, относящиеся к объекту, в одном файле и включить его, используя указанный выше метод, в свойindex.js файл.