[Разработка веб-сайтов, JavaScript, Программирование, Node.JS] Руководство по Express.js. Часть 1 (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 8 месяцев
Сообщений: 27286
Доброго времени суток, друзья!
Представляю вашему вниманию перевод первой части Руководства по Express — веб-феймворку для Node.js автора Flavio Copes.
Предполагается, что вы знакомы с Node.js. Если нет, то прошу сюда.
Без дальнейших предисловий.
1. Введение
Express — это веб-фреймворк для Node.js.
Node.js — замечательный инструмент для создания сетевых сервисов и приложений.
Express использует возможности Node.js, значительно облегчая процесс создания веб-сервера.
Он является открытым, бесплатным, расширяемым и предоставляет множество готовых решений для создания сервера.
2. Установка
Express можно установить с помощью npm:
npm i express
Или yarn:
yarn add express
Для инициализации нового проекта выполните команду npm init или yarn init. Для автоматического заполнения полей следует добавить флаг -y.
3. Hello World
Мы готовы к созданию нашего первого сервера.
Вот его код:
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(3000, () => console.log('Сервер запущен'))
Сохраните этот код в файле index.js и запустите сервер:
node index.js
Откройте браузер на localhost:3000 и увидете сообщения «Hello World!» на экране и «Сервер запущен» в консоли.
4. Основы Express
Эти 4 строки кода делают множество вещей за кулисами.
Сначала мы импортируем библиотеку express.
Затем инициализируем приложение, вызывая метод app().
После получения объекта приложения мы указываем ему обрабатывать GET-запросы к пути "/" с помощью метод get().
Для каждого HTTP-метода или, как еще говорят, глагола (хотя среди методов встречаются и существительные) имеется соответствующий метод Express:
app.get('/', (req, res) => {})
app.post('/', (req, res) => {})
app.put('/', (req, res) => {})
app.delete('/', (req, res) => {})
app.patch('/', (req, res) => {})
Все эти методы принимают колбек, вызываемый при получении запроса для его обработки.
Мы передаем его так:
(req, res) => res.send('Hello World!')
Аргументы req и res соответствуют объектам Request (запрос) и Response (ответ).
Request содержит информацию о запросе, включая параметры, заголовки, тело запроса и т.д.
Response — это объект, отправляемый клиенту в ответ на запрос.
В нашем коде мы отправляем клиенту строку «Hello World!» с помощью метода Response.send().
Данный метод помещает строку в тело ответа и закрывает соединение.
Последняя строка кода запускает сервер и указывает ему «слушать» порт 3000. Передаваемый колбек вызывается при готовности сервера к получению запросов.
6. Параметры запроса
Объект Request содержит информацию о запросе.
Ниже приведены основные свойства этого объекта.
Свойство
Описание
.app
содержит ссылку на объект приложения
.baseUrl
содержит ссылку на экземпляр маршрутизатора (express.Router())
.body
содержит данные, помещенные в тело запроса (должны быть разобраны (parsed) и заполнены (populated) перед использованием)
.cookies
содержит куки, установленные в запросе (требуется промежуточное программное обеспечение (далее — ППО) cookie-parser)
.hostname
название хоста сервера
.ip
IP-адрес сервера
.method
метод запроса
.params
объект с именованными параметрами запроса (например, при запросе к /users/:id, id будет записано в req.params.id)
.path
URL запроса
.protocol
протокол запроса
.query
объект с параметрами строки запроса (например, при запросе к /search?name=john, john будет записано в req.query.name)
.secure
содержит true, если запрос является безопасным (если используется HTTPS)
.signedCookies
содержит подписанные куки (требуется ППО cookie-parser)
.xhr
содержит true, если запрос — это XMLHttpRequest
7. Получение параметров из строки запроса
Строка запроса — это часть URL после вопросительного знака (?).
Например:
?name=john
Несколько параметров могут передаваться с помощью амперсанда (&):
?name=john&age=30
Как извлечь эти значения?
Это делается посредством распаковывания объекта Request.query:
const express = require('express')
const app = express()
app.get('/', (req, res) => {
console.log(req.query)
})
app.listen(8080)
Данный объект содержит свойство для каждого параметра строки запроса.
Если параметры отсутствуют, объект является пустым.
Перебрать объект можно с помощью цикла for/in:
for (const key in req.query) {
console.log(key, req.query[key])
}
Этот код выведет в консоль ключи и значения параметров строки запроса.
Также можно получить значение конкретного параметра:
req.query.name // john
req.query.age // 30
8. Получение параметров строки POST-запроса
Параметры строки POST-запроса предоставляются клиентом при отправке формы или других данных.
Как нам получить эти параметры?
Если данные были отправлены в формате JSON с помощью Content-Type: application/json, такие данные необходимо разобрать с помощью ППО express.json(). ППО подключается с помощью метода app.use():
const express = require('express')
const app = express()
app.use(express.json())
Если данные были отправлены в формате JSON с помощью Content-Type: application/x-www-urlencoded, такие данные необходимо разобрать с помощью ППО express.urlencoded():
const express = require('express')
const app = express()
app.use(express.urlencoded())
В обоих случаях данные можно получить через Request.body:
app.post('/form', (req, res) => {
const name = req.body.name
})
Обратите внимание, что в старых версиях Express для обработки данных в качестве ППО использовался модуль body-parcer. В настоящее время данный модуль встроен в Express.
9. Отправка ответа
Как отправить ответ клиенту?
В приведенном примере мы использовали метод Response.send() для отправки клиенту ответа в виде строки и закрытия соединения:
(req, res) => res.send('Hello World!')
При передачи строки, заголовок Content-Type устанавливается в значение text/html.
При передачи объекта или массива, заголовок Content-Type устанавливается в значение application/json, а данные преобразуются в формат JSON.
send() также автоматически устанавливает заголовок Content-Length и закрывает соединение с сервером.
Использование end() для отправки пустого ответа
Альтернативным способом отправки клиенту ответа, не содержащего тела, является использование метода Response.end():
res.end()
Установка статуса ответа
Для этого используется метод Response.status():
res.status(404).end()
Или:
res.status(404).send('Файл не найден')
sendStatus() является сокращением для res.status().send():
res.sendStatus(200) // === res.status(200).send('Ok')
res.sendStatus(403) // === res.status(403).send('Forbidden')
res.sendStatus(404) // === res.status(404).send('Not Found')
res.sendStatus(500) // === res.status(500).send('Internal Server Error')
10. Отправка ответа в формате JSON
При обработке запросов маршрутизатором колбек вызывается с двумя параметрами — экземпляром объекта Request и экземпляром объекта Response.
Например:
app.get('/', (req, res) => res.send('Hello World!'))
Здесь мы используем метод Response.send(), принимающий строку.
Ответ клиенту в формате JSON можно отправить с помощью метода Response.json().
Данный метод принимате объект или массив и конвертирует его в JSON:
res.json({ name: 'John' }) // { "name": "John" }
На сегодня это все. В следующей части мы поговорим об управлении куками, работе с HTTP-заголовками, перенаправлениях, маршрутизации и политике одного источника.
Следите за обновлениями. Благодарю за внимание и хорошего дня.
===========
Источник:
habr.com
===========
===========
Автор оригинала: Flavio Copes
===========Похожие новости:
- [Высокая производительность, Программирование, Анализ и проектирование систем, Промышленное программирование] Проблематика распределенных транзакций в контексте микросервисной архитектуры
- 30% из тысячи крупнейших сайтов используют скрипты для скрытой идентификации
- [Программирование, C++, Программирование микроконтроллеров] Светодиод, таймер и прерывания на RISC-V с нуля (на примере GD32VF103 и IAR C++)
- [Разработка веб-сайтов, JavaScript, Программирование] Изучаем Parcel — альтернативу Webpack для небольших проектов
- [Qt, Программирование микроконтроллеров] Обзор возможностей Qt Creator 4.13 и QBS 1.17 для программирования микроконтроллеров
- [Разработка веб-сайтов, Программирование, Java] Пишем чат с использованием Spring Boot и WebSockets (перевод)
- [Поисковая оптимизация, Разработка веб-сайтов] Ленивая загрузка для карт
- [Ненормальное программирование, Программирование, Совершенный код, C++] Совершенный цикл
- [JavaScript, Angular, TypeScript] Что можно положить в механизм Dependency Injection в Angular?
- [DevOps, Информационная безопасность, Разработка веб-сайтов, Разработка мобильных приложений] DevSecOps: принципы работы и сравнение SCA. Часть первая
Теги для поиска: #_razrabotka_vebsajtov (Разработка веб-сайтов), #_javascript, #_programmirovanie (Программирование), #_node.js, #_javascript, #_node.js, #_nodejs, #_node, #_express.js, #_expressjs, #_express, #_guide, #_rukovodstvo (руководство), #_razrabotka_vebsajtov (
Разработка веб-сайтов
), #_javascript, #_programmirovanie (
Программирование
), #_node.js
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 01-Ноя 05:12
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 8 месяцев |
|
Доброго времени суток, друзья! Представляю вашему вниманию перевод первой части Руководства по Express — веб-феймворку для Node.js автора Flavio Copes. Предполагается, что вы знакомы с Node.js. Если нет, то прошу сюда. Без дальнейших предисловий. 1. Введение Express — это веб-фреймворк для Node.js. Node.js — замечательный инструмент для создания сетевых сервисов и приложений. Express использует возможности Node.js, значительно облегчая процесс создания веб-сервера. Он является открытым, бесплатным, расширяемым и предоставляет множество готовых решений для создания сервера. 2. Установка Express можно установить с помощью npm: npm i express
Или yarn: yarn add express
Для инициализации нового проекта выполните команду npm init или yarn init. Для автоматического заполнения полей следует добавить флаг -y. 3. Hello World Мы готовы к созданию нашего первого сервера. Вот его код: const express = require('express')
const app = express() app.get('/', (req, res) => res.send('Hello World!')) app.listen(3000, () => console.log('Сервер запущен')) Сохраните этот код в файле index.js и запустите сервер: node index.js
Откройте браузер на localhost:3000 и увидете сообщения «Hello World!» на экране и «Сервер запущен» в консоли. 4. Основы Express Эти 4 строки кода делают множество вещей за кулисами. Сначала мы импортируем библиотеку express. Затем инициализируем приложение, вызывая метод app(). После получения объекта приложения мы указываем ему обрабатывать GET-запросы к пути "/" с помощью метод get(). Для каждого HTTP-метода или, как еще говорят, глагола (хотя среди методов встречаются и существительные) имеется соответствующий метод Express: app.get('/', (req, res) => {})
app.post('/', (req, res) => {}) app.put('/', (req, res) => {}) app.delete('/', (req, res) => {}) app.patch('/', (req, res) => {}) Все эти методы принимают колбек, вызываемый при получении запроса для его обработки. Мы передаем его так: (req, res) => res.send('Hello World!')
Аргументы req и res соответствуют объектам Request (запрос) и Response (ответ). Request содержит информацию о запросе, включая параметры, заголовки, тело запроса и т.д. Response — это объект, отправляемый клиенту в ответ на запрос. В нашем коде мы отправляем клиенту строку «Hello World!» с помощью метода Response.send(). Данный метод помещает строку в тело ответа и закрывает соединение. Последняя строка кода запускает сервер и указывает ему «слушать» порт 3000. Передаваемый колбек вызывается при готовности сервера к получению запросов. 6. Параметры запроса Объект Request содержит информацию о запросе. Ниже приведены основные свойства этого объекта. Свойство Описание .app содержит ссылку на объект приложения .baseUrl содержит ссылку на экземпляр маршрутизатора (express.Router()) .body содержит данные, помещенные в тело запроса (должны быть разобраны (parsed) и заполнены (populated) перед использованием) .cookies содержит куки, установленные в запросе (требуется промежуточное программное обеспечение (далее — ППО) cookie-parser) .hostname название хоста сервера .ip IP-адрес сервера .method метод запроса .params объект с именованными параметрами запроса (например, при запросе к /users/:id, id будет записано в req.params.id) .path URL запроса .protocol протокол запроса .query объект с параметрами строки запроса (например, при запросе к /search?name=john, john будет записано в req.query.name) .secure содержит true, если запрос является безопасным (если используется HTTPS) .signedCookies содержит подписанные куки (требуется ППО cookie-parser) .xhr содержит true, если запрос — это XMLHttpRequest 7. Получение параметров из строки запроса Строка запроса — это часть URL после вопросительного знака (?). Например: ?name=john
Несколько параметров могут передаваться с помощью амперсанда (&): ?name=john&age=30
Как извлечь эти значения? Это делается посредством распаковывания объекта Request.query: const express = require('express')
const app = express() app.get('/', (req, res) => { console.log(req.query) }) app.listen(8080) Данный объект содержит свойство для каждого параметра строки запроса. Если параметры отсутствуют, объект является пустым. Перебрать объект можно с помощью цикла for/in: for (const key in req.query) {
console.log(key, req.query[key]) } Этот код выведет в консоль ключи и значения параметров строки запроса. Также можно получить значение конкретного параметра: req.query.name // john
req.query.age // 30 8. Получение параметров строки POST-запроса Параметры строки POST-запроса предоставляются клиентом при отправке формы или других данных. Как нам получить эти параметры? Если данные были отправлены в формате JSON с помощью Content-Type: application/json, такие данные необходимо разобрать с помощью ППО express.json(). ППО подключается с помощью метода app.use(): const express = require('express')
const app = express() app.use(express.json()) Если данные были отправлены в формате JSON с помощью Content-Type: application/x-www-urlencoded, такие данные необходимо разобрать с помощью ППО express.urlencoded(): const express = require('express')
const app = express() app.use(express.urlencoded()) В обоих случаях данные можно получить через Request.body: app.post('/form', (req, res) => {
const name = req.body.name }) Обратите внимание, что в старых версиях Express для обработки данных в качестве ППО использовался модуль body-parcer. В настоящее время данный модуль встроен в Express. 9. Отправка ответа Как отправить ответ клиенту? В приведенном примере мы использовали метод Response.send() для отправки клиенту ответа в виде строки и закрытия соединения: (req, res) => res.send('Hello World!')
При передачи строки, заголовок Content-Type устанавливается в значение text/html. При передачи объекта или массива, заголовок Content-Type устанавливается в значение application/json, а данные преобразуются в формат JSON. send() также автоматически устанавливает заголовок Content-Length и закрывает соединение с сервером. Использование end() для отправки пустого ответа Альтернативным способом отправки клиенту ответа, не содержащего тела, является использование метода Response.end(): res.end()
Установка статуса ответа Для этого используется метод Response.status(): res.status(404).end()
Или: res.status(404).send('Файл не найден')
sendStatus() является сокращением для res.status().send(): res.sendStatus(200) // === res.status(200).send('Ok')
res.sendStatus(403) // === res.status(403).send('Forbidden') res.sendStatus(404) // === res.status(404).send('Not Found') res.sendStatus(500) // === res.status(500).send('Internal Server Error') 10. Отправка ответа в формате JSON При обработке запросов маршрутизатором колбек вызывается с двумя параметрами — экземпляром объекта Request и экземпляром объекта Response. Например: app.get('/', (req, res) => res.send('Hello World!'))
Здесь мы используем метод Response.send(), принимающий строку. Ответ клиенту в формате JSON можно отправить с помощью метода Response.json(). Данный метод принимате объект или массив и конвертирует его в JSON: res.json({ name: 'John' }) // { "name": "John" }
На сегодня это все. В следующей части мы поговорим об управлении куками, работе с HTTP-заголовками, перенаправлениях, маршрутизации и политике одного источника. Следите за обновлениями. Благодарю за внимание и хорошего дня. =========== Источник: habr.com =========== =========== Автор оригинала: Flavio Copes ===========Похожие новости:
Разработка веб-сайтов ), #_javascript, #_programmirovanie ( Программирование ), #_node.js |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 01-Ноя 05:12
Часовой пояс: UTC + 5