Express — очень популярное приложение для создания серверов в node. И не зря, оно действительно удобно в использовании. А когда учишься чему-либо, нужно начинать с основ.
Чтобы установить express, необходимо скачать пакет express npm install express
. Затем потребовать его в файле с помощью const express = require('express')
. Чтобы создать приложение express, просто вызовите его и присвойте его переменной, например, так const app = express()
. Теперь, когда приложение создано, используется метод ‘listen’, чтобы заставить его работать на порту, app.listen(3000)
. При использовании экспресс-метода порядок его установки имеет значение. Поэтому метод listen должен быть в самом низу. Даже ниже всех других методов, которые будут установлены.
В мире Интернета косые черты в url указывают на конкретные маршруты. Приведенный выше код создает домашнюю страницу на маршруте localhost:3000. Таким образом, любое взаимодействие с сервером должно осуществляться с помощью маршрута. И здесь Express превосходит всех. Express имеет множество методов для взаимодействия с маршрутами.
Методы маршрута
Методы маршрутов Express, такие как get, post и т.д., происходят от методов HTTP-запросов. Метод get принимает как минимум 2 аргумента. Первый — это маршрут. Маршрут может быть строкой или переменной. Второй аргумент — это функция, которая действует как промежуточное программное обеспечение, обрабатывая объект запроса, отправленный в маршрут.
app.get('/', (req, res) => {
res.send('Homepage')
Например, в этом запросе get маршрут установлен на домашнюю страницу с помощью простого прямого слеша ‘/’. А промежуточное ПО — это просто функция, которая имеет параметры запроса и ответа. Затем она просто отправляет ответ ‘Homepage’, когда запрос сделан к домашней странице.
Несколько промежуточных программ
Маршрут может иметь несколько промежуточных функций для обработки объекта запроса. При использовании нескольких функций необходим третий параметр, называемый ‘next’. Цель этой функции ‘next’ — передать запрос следующей промежуточной функции в этом маршруте или другому маршруту.
app.get('/user/:id', (req, res, next) => {
if (req.params.id === 'Batman') next('/Batcave)
else next()
}, (req, res, next) => {
res.send('Go away Robin')
})
Express также имеет метод ‘use’, который будет передавать промежуточное ПО для каждого метода, используемого ниже него. Например, при передаче json будет происходить автоматический разбор данных при их отправке.
app.use(express.json)
app.post('/batsignal', (req, res) => {
res.send('Nana Nana Nana' + req.body.batman)
})
Цепляемые обработчики маршрутов
Маршрут может быть связан с несколькими обработчиками, такими как get, post, put и т.д. Это помогает избежать повторения кода. Это делается с помощью метода Router()
, который создает новый объект router.
const express = require('express')
const router = express.Router()
router.route('/:batsuit')
.get((req, res) ⇒ {
res.send(`Get batsuit ${req.params.batsuit}`)
})
.post((req, res) ⇒ {
res.send(`Add batsuit ${req.params.batsuit}`)
})
.put((req, res) ⇒ {
res.send(`Update batsuit ${req.params.batsuit}`)
})
В Express есть еще много методов, это только те, с которыми я сталкивался чаще всего. За исключением цепочки маршрутов, о ней я только что узнал. Я уже мечтаю о том, как красиво будет выглядеть мой код, когда я его использую. В документации по экспрессу довольно легко ориентироваться. После написания этой статьи я определенно стал большим поклонником express.
Источники
-
https://expressjs.com/en/4x/api.html#expres
-
https://github.com/expressjs/express/blob/master/lib/application.js#L540-543