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 файл.