Le module Node http

Le module http de Node.js fournit des fonctions et des classes utiles pour construire un serveur HTTP

Le module principal HTTP est un module clé de la mise en réseau des nœuds.

Il peut être inclus en utilisant

const http = require('http')

Le module fournit certaines propriétés et méthodes, ainsi que certaines classes.

Propriétés

http.METHODS

Cette propriété répertorie toutes les méthodes HTTP prises en charge:

> 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

Cette propriété répertorie tous les codes d'état HTTP et leur description:

> 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

Pointe vers l'instance globale de l'objet Agent, qui est une instance dehttp.Agentclasser.

Il est utilisé pour gérer la persistance et la réutilisation des connexions pour les clients HTTP, et c'est un composant clé du réseau HTTP Node.

Plus dans lehttp.Agentdescription de la classe plus tard.

Méthodes

http.createServer()

Renvoie une nouvelle instance duhttp.Serverclasser.

Usage:

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

http.request()

Fait une requête HTTP à un serveur, créant une instance duhttp.ClientRequestclasser.

http.get()

Semblable àhttp.request(), mais définit automatiquement la méthode HTTP sur GET et appellereq.end()automatiquement.

Des classes

Le module HTTP propose 5 classes:

  • http.Agent
  • http.ClientRequest
  • http.Server
  • http.ServerResponse
  • http.IncomingMessage

http.Agent

Node crée une instance globale duhttp.Agentclasse pour gérer la persistance et la réutilisation des connexions pour les clients HTTP, un composant clé de la mise en réseau HTTP Node.

Cet objet garantit que chaque demande adressée à un serveur est mise en file d'attente et qu'un seul socket est réutilisé.

Il maintient également un pool de prises. Ceci est essentiel pour des raisons de performances.

http.ClientRequest

Unehttp.ClientRequestl'objet est créé lorsquehttp.request()ouhttp.get()est appelé.

Lorsqu'une réponse est reçue, leresponsel'événement est appelé avec la réponse, avec unhttp.IncomingMessageinstance comme argument.

Les données renvoyées d'une réponse peuvent être lues de 2 manières:

  • vous pouvez appeler leresponse.read()méthode
  • dans leresponsegestionnaire d'événements, vous pouvez configurer un écouteur d'événements pour ledataévénement, afin que vous puissiez écouter les données diffusées dans.

http.Server

Cette classe est généralement instanciée et renvoyée lors de la création d'un nouveau serveur à l'aide dehttp.createServer().

Une fois que vous avez un objet serveur, vous avez accès à ses méthodes:

  • close()empêche le serveur d'accepter de nouvelles connexions
  • listen()démarre le serveur HTTP et écoute les connexions

http.ServerResponse

Créé par unhttp.Serveret passé comme deuxième paramètre aurequestévénement, il se déclenche.

Communément connu et utilisé dans le code commeres:

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

La méthode que vous appellerez toujours dans le gestionnaire estend(), ce qui ferme la réponse, le message est complet et le serveur peut l'envoyer au client. Il doit être appelé à chaque réponse.

Ces méthodes sont utilisées pour interagir avec les en-têtes HTTP:

  • getHeaderNames()obtenir la liste des noms des en-têtes HTTP déjà définis
  • getHeaders()obtenir une copie des en-têtes HTTP déjà définis
  • setHeader('headername', value)définit une valeur d'en-tête HTTP
  • getHeader('headername')obtient un en-tête HTTP déjà défini
  • removeHeader('headername')supprime un en-tête HTTP déjà défini
  • hasHeader('headername')renvoie true si la réponse a cet en-tête défini
  • headersSent()renvoie true si les en-têtes ont déjà été envoyés au client

Après avoir traité les en-têtes, vous pouvez les envoyer au client en appelantresponse.writeHead(), qui accepte le statusCode comme premier paramètre, le message d'état facultatif et l'objet headers.

Pour envoyer des données au client dans le corps de la réponse, vous utilisezwrite(). Il enverra des données tamponnées au flux de réponse HTTP.

Si les en-têtes n'ont pas encore été envoyés en utilisantresponse.writeHead(), il enverra d'abord les en-têtes, avec le code d'état et le message définis dans la demande, que vous pouvez modifier en définissant lestatusCodeetstatusMessagevaleurs des propriétés:

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

http.IncomingMessage

Unehttp.IncomingMessagel'objet est créé par:

  • http.Serveren écoutant lerequestun événement
  • http.ClientRequesten écoutant leresponseun événement

Il peut être utilisé pour accéder à la réponse:

  • statut en utilisant sonstatusCodeetstatusMessageméthodes
  • en-têtes utilisant sonheadersméthode ourawHeaders
  • Méthode HTTP utilisant samethodméthode
  • Version HTTP utilisant lehttpVersionméthode
  • URL utilisant leurlméthode
  • socket sous-jacent en utilisant lesocketméthode

Les données sont accessibles à l'aide de flux, carhttp.IncomingMessageimplémente l'interface Readable Stream.

Téléchargez mon gratuitManuel de Node.js


Plus de didacticiels sur les nœuds: