Модуль http в Node.js предоставляет полезные функции и классы для создания HTTP-сервера.
Модуль ядра HTTP - это ключевой модуль для работы в сети Node.
Его можно включить с помощью
const http = require('http')
Модуль предоставляет некоторые свойства и методы, а также некоторые классы.
Характеристики
http.METHODS
В этом свойстве перечислены все поддерживаемые методы HTTP:
> require('http').METHODS
[ 'ACL',
'BIND',
'CHECKOUT',
'CONNECT',
'COPY',
'DELETE',
'GET',
'HEAD',
'LINK',
'LOCK',
'M-SEARCH',
'MERGE',
'MKACTIVITY',
'MKCALENDAR',
'MKCOL',
'MOVE',
'NOTIFY',
'OPTIONS',
'PATCH',
'POST',
'PROPFIND',
'PROPPATCH',
'PURGE',
'PUT',
'REBIND',
'REPORT',
'SEARCH',
'SUBSCRIBE',
'TRACE',
'UNBIND',
'UNLINK',
'UNLOCK',
'UNSUBSCRIBE' ]
http.STATUS_CODES
В этом свойстве перечислены все коды состояния HTTP и их описание:
> require('http').STATUS_CODES
{ '100': 'Continue',
'101': 'Switching Protocols',
'102': 'Processing',
'200': 'OK',
'201': 'Created',
'202': 'Accepted',
'203': 'Non-Authoritative Information',
'204': 'No Content',
'205': 'Reset Content',
'206': 'Partial Content',
'207': 'Multi-Status',
'208': 'Already Reported',
'226': 'IM Used',
'300': 'Multiple Choices',
'301': 'Moved Permanently',
'302': 'Found',
'303': 'See Other',
'304': 'Not Modified',
'305': 'Use Proxy',
'307': 'Temporary Redirect',
'308': 'Permanent Redirect',
'400': 'Bad Request',
'401': 'Unauthorized',
'402': 'Payment Required',
'403': 'Forbidden',
'404': 'Not Found',
'405': 'Method Not Allowed',
'406': 'Not Acceptable',
'407': 'Proxy Authentication Required',
'408': 'Request Timeout',
'409': 'Conflict',
'410': 'Gone',
'411': 'Length Required',
'412': 'Precondition Failed',
'413': 'Payload Too Large',
'414': 'URI Too Long',
'415': 'Unsupported Media Type',
'416': 'Range Not Satisfiable',
'417': 'Expectation Failed',
'418': 'I\'m a teapot',
'421': 'Misdirected Request',
'422': 'Unprocessable Entity',
'423': 'Locked',
'424': 'Failed Dependency',
'425': 'Unordered Collection',
'426': 'Upgrade Required',
'428': 'Precondition Required',
'429': 'Too Many Requests',
'431': 'Request Header Fields Too Large',
'451': 'Unavailable For Legal Reasons',
'500': 'Internal Server Error',
'501': 'Not Implemented',
'502': 'Bad Gateway',
'503': 'Service Unavailable',
'504': 'Gateway Timeout',
'505': 'HTTP Version Not Supported',
'506': 'Variant Also Negotiates',
'507': 'Insufficient Storage',
'508': 'Loop Detected',
'509': 'Bandwidth Limit Exceeded',
'510': 'Not Extended',
'511': 'Network Authentication Required' }
http.globalAgent
Указывает на глобальный экземпляр объекта Agent, который является экземпляромhttp.Agent
учебный класс.
Он используется для управления постоянством и повторным использованием соединений для HTTP-клиентов и является ключевым компонентом сети Node HTTP.
Больше вhttp.Agent
описание класса позже.
Методы
http.createServer()
Вернуть новый экземплярhttp.Server
учебный класс.
Использование:
const server = http.createServer((req, res) => {
//handle every single request with this callback
})
http.request()
Делает HTTP-запрос к серверу, создавая экземплярhttp.ClientRequest
учебный класс.
http.get()
Похожий наhttp.request()
, но автоматически устанавливает для метода HTTP значение GET и вызываетreq.end()
автоматически.
Классы
Модуль HTTP предоставляет 5 классов:
http.Agent
http.ClientRequest
http.Server
http.ServerResponse
http.IncomingMessage
http.Agent
Узел создает глобальный экземплярhttp.Agent
класс для управления постоянством и повторным использованием соединений для HTTP-клиентов, ключевого компонента сети Node HTTP.
Этот объект гарантирует, что каждый запрос, сделанный к серверу, помещается в очередь и один сокет используется повторно.
Он также поддерживает пул сокетов. Это ключ к производительности.
http.ClientRequest
Anhttp.ClientRequest
объект создается, когдаhttp.request()
или жеhttp.get()
называется.
Когда получен ответ,response
событие вызывается с ответом, сhttp.IncomingMessage
экземпляр как аргумент.
Возвращенные данные ответа можно прочитать двумя способами:
- вы можете позвонить в
response.read()
метод - в
response
обработчик событий, вы можете настроить прослушиватель событий дляdata
событие, чтобы вы могли прослушивать данные, передаваемые в.
http.Server
Этот класс обычно создается и возвращается при создании нового сервера с использованиемhttp.createServer()
.
Когда у вас есть объект сервера, у вас есть доступ к его методам:
close()
останавливает сервер от приема новых подключенийlisten()
запускает HTTP-сервер и прослушивает соединения
http.ServerResponse
Созданоhttp.Server
и передается вторым параметром вrequest
в случае пожара.
Обычно известен и используется в коде какres
:
const server = http.createServer((req, res) => {
//res is an http.ServerResponse object
})
В обработчике вы всегда будете вызыватьend()
, который закрывает ответ, сообщение готово, и сервер может отправить его клиенту. Он должен вызываться при каждом ответе.
Эти методы используются для взаимодействия с заголовками HTTP:
getHeaderNames()
получить список имен уже установленных заголовков HTTPgetHeaders()
получить копию уже установленных заголовков HTTPsetHeader('headername', value)
устанавливает значение заголовка HTTPgetHeader('headername')
получает уже установленный HTTP-заголовокremoveHeader('headername')
удаляет уже установленный HTTP-заголовокhasHeader('headername')
вернуть истину, если в ответе установлен этот заголовокheadersSent()
вернуть истину, если заголовки уже были отправлены клиенту
После обработки заголовков вы можете отправить их клиенту, позвонивresponse.writeHead()
, который принимает statusCode в качестве первого параметра, необязательное сообщение о состоянии и объект заголовков.
Чтобы отправить данные клиенту в теле ответа, вы используетеwrite()
. Он отправит буферизованные данные в поток ответа HTTP.
Если заголовки еще не были отправлены с использованиемresponse.writeHead()
, он сначала отправит заголовки с кодом состояния и сообщением, установленным в запросе, который вы можете редактировать, установивstatusCode
иstatusMessage
значения свойств:
response.statusCode = 500
response.statusMessage = 'Internal Server Error'
http.IncomingMessage
Anhttp.IncomingMessage
объект создан:
http.Server
при прослушиванииrequest
мероприятиеhttp.ClientRequest
при прослушиванииresponse
мероприятие
Его можно использовать для доступа к ответу:
- статус, используя его
statusCode
иstatusMessage
методы - заголовки, использующие его
headers
метод илиrawHeaders
- HTTP-метод, использующий его
method
метод - Версия HTTP с использованием
httpVersion
метод - URL с использованием
url
метод - базовый сокет с использованием
socket
метод
Доступ к данным осуществляется с помощью потоков, посколькуhttp.IncomingMessage
реализует интерфейс Readable Stream.
Скачать мою бесплатнуюСправочник по Node.js
Дополнительные руководства по узлам:
- Введение в менеджер пакетов npm
- Введение в Node.js
- HTTP-запросы с использованием Axios
- Где разместить приложение Node.js
- Взаимодействовать с Google Analytics API с помощью Node.js
- Средство выполнения пакетов npx Node
- Руководство по package.json
- Где npm устанавливает пакеты?
- Как обновить Node.js
- Как использовать или выполнить пакет, установленный с помощью npm
- Файл package-lock.json
- Семантическое управление версиями с использованием npm
- Следует ли зафиксировать папку node_modules в Git?
- Обновите все зависимости Node до последней версии
- Разбор JSON с помощью Node.js
- Найдите установленную версию пакета npm
- Node.js потоки
- Установите старую версию пакета npm
- Получить текущую папку в Node
- Как зарегистрировать объект в Node
- Предоставление функциональности из файла узла с помощью экспорта
- Различия между узлом и браузером
- Сделайте HTTP-запрос POST с помощью Node
- Получить данные тела HTTP-запроса с помощью Node
- Буферы узлов
- Краткая история Node.js
- Как установить Node.js
- Сколько JavaScript вам нужно знать, чтобы использовать Node?
- Как использовать Node.js REPL
- Узел, принимать аргументы из командной строки
- Вывод в командную строку с помощью Node
- Принять ввод из командной строки в Node
- Удаление пакетов npm с помощью `npm uninstall`
- npm глобальные или локальные пакеты
- зависимости npm и devDependencies
- Цикл событий Node.js
- Понимание process.nextTick ()
- Понимание setImmediate ()
- Эмиттер событий узла
- Создайте HTTP-сервер
- Выполнение HTTP-запросов с помощью Node
- Модуль Node fs
- HTTP-запросы в Node с использованием Axios
- Чтение файлов с помощью Node
- Пути к файлам узлов
- Написание файлов с помощью Node
- Статистика файла узла
- Работа с файловыми дескрипторами в Node
- Работа с папками в Node
- Модуль пути к узлу
- Модуль Node http
- Использование WebSockets с Node.js
- Основы работы с MySQL и Node
- Обработка ошибок в Node.js
- Путеводитель по мопсу
- Как читать переменные среды из Node.js
- Как выйти из программы Node.js
- Модуль Node os
- Модуль событий узла
- Узел, разница между разработкой и производством
- Как проверить, существует ли файл в Node.js
- Как создать пустой файл в Node.js
- Как удалить файл с помощью Node.js
- Как получить дату последнего обновления файла с помощью Node.js
- Как определить, сегодня ли дата в JavaScript
- Как записать объект JSON в файл в Node.js
- Почему вам следует использовать Node.js в вашем следующем проекте?
- Запускайте веб-сервер из любой папки
- Как использовать MongoDB с Node.js
- Используйте Chrome DevTools для отладки приложения Node.js
- Что такое pnpm?
- Список параметров среды выполнения Node.js v8
- Как исправить ошибку «Отсутствует доступ для записи» при использовании npm
- Как включить модули ES в Node.js
- Как создать дочерний процесс с помощью Node.js
- Как получить в Express и разобранное, и необработанное тело
- Как обрабатывать загрузку файлов в Node.js
- Каковы одноранговые зависимости в модуле Node?
- Как написать файл CSV с помощью Node.js
- Как читать CSV-файл с помощью Node.js
- Модули ядра узла
- Увеличение номеров сразу нескольких папок с помощью Node.js
- Как распечатать холст по URL-адресу данных
- Как создать и сохранить изображение с помощью Node.js и Canvas
- Как скачать изображение с помощью Node.js
- Как массово переименовывать файлы в Node.js
- Как получить имена всех файлов в папке в Node
- Как использовать обещания и ожидания с функциями обратного вызова Node.js
- Как протестировать пакет npm локально
- Как проверить текущую версию Node.js во время выполнения
- Как использовать Sequelize для взаимодействия с PostgreSQL
- Обслуживайте HTML-страницу с помощью Node.js
- Как устранить ошибку `util.pump is not a function` в Node.js