Маршрутизация¶
С помощью маршрутизации описываются ответы 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 приложении, а про саму обработку получаемых запросов подробно можно узнать в статьях Объект запроса и Объект ответа.