Maison  >  Article  >  interface Web  >  Nodejs crée un client pour envoyer une requête

Nodejs crée un client pour envoyer une requête

王林
王林original
2023-05-17 09:32:36595parcourir

Node.js est un environnement d'exécution backend open source écrit en Javascript, qui permet aux développeurs d'écrire des scripts en utilisant Javascript côté serveur. Dans Node.js, nous pouvons utiliser le module http intégré pour créer un serveur HTTP et communiquer avec les clients. En parallèle, nous pouvons également utiliser le module http pour créer un client et envoyer des requêtes.

Dans cet article, nous verrons comment créer un client et envoyer des requêtes HTTP au serveur à l'aide de Node.js.

  1. Créer un client HTTP

Pour créer un client HTTP, nous devons utiliser la méthode request() du module http. La méthode request() reçoit deux paramètres : les options et la fonction de rappel.

Le paramètre options est un objet utilisé pour spécifier les détails de la requête, y compris l'URL demandée, la méthode demandée, l'en-tête de la requête et le corps de la requête.

La fonction de rappel est une fonction de rappel utilisée pour traiter les données de la réponse du serveur. Lorsque les données de réponse sont disponibles, Node.js appellera automatiquement cette fonction de rappel pour que les développeurs traitent les données de réponse.

Ce qui suit est un exemple simple de la façon de créer un client HTTP à l'aide de Node.js :

const http = require('http');

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/api/users',
  method: 'GET',
  headers: {
    'Content-Type': 'application/json'
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (chunk) => {
    console.log(chunk.toString());
  });

  res.on('end', () => {
    console.log('请求结束')
  });
});

req.on('error', (error) => {
  console.error(error)
});

req.end();

Dans le code ci-dessus, nous créons un objet d'options pour décrire les détails de la demande, y compris l'URL demandée, la méthode de demande, l'en-tête de la demande et corps de la demande. Ensuite, nous utilisons la méthode http.request() pour créer un objet de requête req et transmettons l'objet options et une fonction de rappel.

Lorsque req appelle la méthode end(), la requête sera envoyée au serveur. Avant que la méthode end() ne soit appelée, nous pouvons utiliser la méthode req.write() pour écrire les données du corps de la requête. Lorsque les données de réponse du serveur sont disponibles, Node.js appellera la fonction de rappel et transmettra l'objet de réponse res. Nous utilisons la méthode res.on() dans la fonction de rappel pour gérer la réponse du serveur, et nous pouvons utiliser l'écouteur d'événements de données lorsque le serveur envoie le morceau de données. Lorsque la réponse du serveur se termine, l'événement de fin sera déclenché.

  1. Envoyer la requête POST

Dans l'exemple ci-dessus, nous avons utilisé la requête GET. Si vous devez envoyer une requête POST, vous devez spécifier la méthode de requête comme POST dans l'objet options et configurer les données du corps de la requête. Voici un exemple d'utilisation de la méthode POST pour envoyer une requête HTTP :

const http = require('http');

const postData = JSON.stringify({
  'msg': 'Hello World!'
});

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/api/users',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': postData.length
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (chunk) => {
    console.log(chunk.toString());
  });

  res.on('end', () => {
    console.log('请求结束')
  });
});

req.on('error', (error) => {
  console.error(error)
});

req.write(postData);
req.end();

Dans le code ci-dessus, nous utilisons la méthode JSON.stringify() pour convertir un objet JSON contenant l'attribut msg en chaîne et l'attribuer à la variable postData. Ensuite, nous créons un objet options contenant les détails de la requête POST et spécifions la longueur postData comme valeur de l'attribut Content-Length de l'en-tête de la requête. Enfin, nous utilisons la méthode req.write() pour écrire les données postData, puis appelons la méthode req.end() pour envoyer la requête.

  1. Client envoyant des fichiers

Dans certains cas, nous devons envoyer des fichiers locaux au serveur. Dans Node.js, nous pouvons utiliser la méthode createReadStream() dans le module fs pour créer un flux lisible et l'ajouter à l'objet de requête. Voici un exemple de la façon d'envoyer un fichier dans Node.js :

const http = require('http');
const fs = require('fs');

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/api/users',
  method: 'POST',
  headers: {
    'Content-Type': 'text/plain',
    'Content-Disposition': 'attachment; filename=text.txt'
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (chunk) => {
    console.log(chunk.toString());
  });

  res.on('end', () => {
    console.log('请求结束')
  });
});

req.on('error', (error) => {
  console.error(error)
});

const readStream = fs.createReadStream('/path/to/file.txt');
readStream.pipe(req);

req.end();

Dans le code ci-dessus, nous créons un objet options pour décrire les détails de la demande et spécifions la méthode de demande comme POST. Ensuite, nous utilisons la méthode createReadStream() pour créer un flux lisible, puis ajoutons le flux lisible à l'objet de requête via la méthode pipe(). Enfin, nous envoyons la requête en utilisant la méthode req.end().

  1. Envoi de données JSON côté client

Envoyer des données JSON dans Node.js est très simple, il suffit de créer un objet JSON et de l'envoyer en tant que corps de la requête. Voici un exemple de la façon d'envoyer des données JSON dans Node.js :

const http = require('http');

const data = JSON.stringify({
  'firstName': 'John',
  'lastName': 'Doe'
});

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/api/users',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (chunk) => {
    console.log(chunk.toString());
  });

  res.on('end', () => {
    console.log('请求结束')
  });
});

req.on('error', (error) => {
  console.error(error)
});

req.write(data);
req.end();

Dans le code ci-dessus, nous créons un objet JSON et le convertissons en chaîne, puis l'écrivons dans le corps de la requête à envoyer au serveur. Enfin, nous envoyons la requête en utilisant la méthode req.end().

Résumé

Créer un client HTTP dans Node.js et envoyer des requêtes est très simple. Nous pouvons utiliser la méthode request() du module http pour créer un objet de requête et traiter la réponse du serveur dans la fonction de rappel. Si vous devez envoyer une requête POST, vous devez spécifier la méthode de requête comme POST et configurer les données du corps de la requête. Si vous devez envoyer un fichier, vous devez créer un flux lisible à l'aide de la méthode createReadStream() dans le module fs et l'ajouter à l'objet de requête. Si vous devez envoyer des données JSON, vous devez convertir l'objet JSON en chaîne et l'écrire dans le corps de la requête.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn