Рубрики
Без рубрики

Модуль http узла

http-модуль Node.js предоставляет полезные функции и классы для создания HTTP-сервера

Модуль ядра HTTP является ключевым модулем для сети узлов.

  • Свойства
    • http. методы
    • http. СТАТУС_КОДЫ
    • СТАТУС_КОДЫ
  • Методы
    • http.Создать сервер()
    • http.запрос()
    • http.получить()
  • Занятия
    • http. Агент
    • http. Запрос клиента
    • http. Сервер
    • http. Ответ Сервера
    • http. Входящее Сообщение

Он может быть включен с помощью

const http = require('http')

Модуль предоставляет некоторые свойства и методы, а также некоторые классы.

Свойства

http. методы

В этом свойстве перечислены все поддерживаемые методы 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. СТАТУС_КОДЫ

В этом свойстве перечислены все коды состояния 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 и их описание:

Указывает на глобальный экземпляр объекта Агента, который является экземпляром http. Агент класс.

Он используется для управления сохраняемостью и повторным использованием соединений для HTTP-клиентов и является ключевым компонентом HTTP-сети узла.

Подробнее в http. Агент описание класса позже.

Методы

http.Создать сервер()

Верните новый экземпляр http. Сервер класс.

Использование:

const server = http.createServer((req, res) => {
  //handle every single request with this callback
})

http.запрос()

Выполняет HTTP-запрос к серверу, создавая экземпляр http. Запрос клиента класс.

http.получить()

Аналогично http.request() , но автоматически устанавливает метод HTTP для GET и автоматически вызывает req.end() .

Занятия

Модуль HTTP предоставляет 5 классов:

  • http. Агент
  • http. Запрос клиента
  • http. Сервер
  • http. Ответ Сервера
  • http. Входящее Сообщение

http. Агент

Узел создает глобальный экземпляр http. Агент класс для управления сохраняемостью и повторным использованием соединений для HTTP-клиентов, ключевого компонента HTTP-сети узла.

Этот объект гарантирует, что каждый запрос, отправленный на сервер, будет помещен в очередь и один сокет будет использован повторно.

Он также поддерживает пул сокетов. Это важно по соображениям производительности.

http. Запрос клиента

/| http. Клиентский запрос объект создается, когда http.request() или вызывается http.get() .

Когда получен ответ, событие response вызывается вместе с ответом с помощью http. Входящее сообщение экземпляр в качестве аргумента.

Возвращенные данные ответа могут быть прочитаны 2 способами:

  • вы можете вызвать response.read() метод
  • в обработчике событий response вы можете настроить прослушиватель событий для события data , чтобы вы могли прослушивать потоковые данные.

http. Сервер

Этот класс обычно создается и возвращается при создании нового сервера с помощью http.createServer() .

Как только у вас есть объект сервера, у вас есть доступ к его методам:

  • закрыть() останавливает сервер от приема новых подключений
  • listen() запускает HTTP-сервер и прослушивает соединения

http. Ответ Сервера

Созданный с помощью http. Сервер и передается в качестве второго параметра в запрос событие, которое он запускает.

Широко известный и используемый в коде как res :

const server = http.createServer((req, res) => {
  //res is an http.ServerResponse object
})

Метод, который вы всегда будете вызывать в обработчике, – это end() , который закрывает ответ, сообщение завершено, и сервер может отправить его клиенту. Он должен вызываться при каждом ответе.

Эти методы используются для взаимодействия с заголовками HTTP:

  • getHeaderNames() получить список имен HTTP-заголовков уже установлено
  • getHeaders() получить копию HTTP-заголовков уже установлено
  • setHeader ('имя заголовка', значение) задает значение заголовка HTTP
  • getHeader ('имя заголовка') получает HTTP-заголовок уже установлено
  • removeHeader('имя заголовка') удаляет HTTP-заголовок уже установлено
  • имеет заголовок ('имя заголовка') возвращает значение true, если в ответе задан этот заголовок
  • отправленные заголовки() возвращают значение true, если заголовки уже были отправлены клиенту

После обработки заголовков вы можете отправить их клиенту, вызвав response.write Head() , который принимает код состояния в качестве первого параметра, необязательное сообщение о состоянии и объект заголовков.

Для отправки данных клиенту в теле ответа вы используете write() . Он отправит буферизованные данные в поток ответов HTTP.

Если заголовки еще не были отправлены с помощью response.writeHead() , он сначала отправит заголовки с кодом состояния и сообщением, заданными в запросе, которые вы можете отредактировать, установив StatusCode и сообщение о состоянии значения свойств:

response.statusCode = 500
response.statusMessage = 'Internal Server Error'

http. Входящее Сообщение

/| http. Входящее сообщение объект создается:

  • http. Сервер при прослушивании запроса событие
  • http. Запрос клиента при прослушивании ответа событие

Его можно использовать для доступа к ответу:

  • статус, используя его код статуса и сообщение о состоянии методы
  • заголовки, использующие его заголовки метод или необработанные заголовки
  • Метод HTTP, использующий его метод метод
  • HTTP-версия, использующая http-версию метод
  • URL-адрес с использованием метода url
  • базовый сокет с использованием сокета метод

Доступ к данным осуществляется с помощью потоков, начиная с http. Входящее сообщение реализует Читаемый интерфейс потока.

Оригинал: “https://flaviocopes.com/node-module-http/”