Модуль Node http

Модуль 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()получить список имен уже установленных заголовков HTTP
  • getHeaders()получить копию уже установленных заголовков HTTP
  • setHeader('headername', value)устанавливает значение заголовка HTTP
  • getHeader('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


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