Маршрутизация¶
С помощью маршрутизации описываются ответы Node.js приложения на запросы, поступающие с клиентской стороны или другого сервера (в случае, если реализуется API) на конкретный URL.
Определение маршрутов¶
Рассмотрим пример структуры простого REST API.
app.js
1 2 3 4 5 6 7 8 9 10 11 12 | |
Экземпляр фреймворка Express имеет методы, совпадающие по названию с основными методами HTTP для передачи данных (get, post, put, delete) и с помощью которых формируется Node.js маршрутизация. Каждый из этих методов принимает два параметра:
- URL, по которому будет осуществляться запрос;
- обрабатывающую запрос функцию (принимает объект запроса и запрос ответа).
Передаваемые данные и информация об отправителе запроса содержится в объекта запроса, а с помощью объекта ответа формируется ответ на запрос.
При описании Node.js маршрутизации в URL допускается использование специальных символов. Так, символ ?, указывает на необязательность символа, за которым он следует.
1 2 | |
Если необходимо указать необязательность группы символов, оберните их в круглые скобки.
1 2 | |
Символ + означает, что предшествующий ему символ может повторяться в этом месте неограниченное количество раз.
1 2 | |
Символ * означает, что на ее месте может быть абсолютно любая последовательность символов, не ограниченная по длине.
1 2 | |
Также Node.js маршрутизация поддерживает при определении URL регулярные выражения.
1 2 | |
При описании Node js маршрутизации важен порядок определения маршрутов. Запрос попадает в первый подходящий обработчик и дальше поиск уже не осуществляется.
all()¶
Метод all() позволяет определить один обработчик на все типы HTTP запросов по заданному URL.
1 2 | |
Теперь все отправляемые на маршрут /api/users запросы (неважно, get, post или еще какой-нибудь другой) будут попадать в единый обработчик.
route()¶
Использование метода route() дает возможность сразу определить для одного URL обработчики для разных HTTP методов.
1 2 3 4 | |
express.Router()¶
С помощью express.Router() можно описать Node.js маршрутизацию как систему взаимосвязанных Middleware (промежуточных обработчиков).
app.js
1 2 3 | |
routes.js
1 2 3 4 5 6 7 8 9 10 11 | |
Node.js express.Router() позволяет создавать составные модульные маршруты без повторного указания повторяющихся частей URL.
В текущей статье рассказано про определение маршрутов в Node.js приложении, а про саму обработку получаемых запросов подробно можно узнать в статьях Объект запроса и Объект ответа.