adresse de requête nodejs

WBOY
WBOYoriginal
2023-05-13 21:29:11493parcourir

Dans le processus de développement Web, nous devons souvent envoyer des requêtes au backend, obtenir des données ou effectuer certaines opérations. Node.js fournit un moyen rapide et simple d'envoyer des requêtes et de traiter le contenu renvoyé. Cet article explique comment utiliser Node.js pour envoyer des requêtes HTTP/HTTPS et traiter le contenu de la requête renvoyée.

Tout d'abord, nous devons installer le package request, qui est un moyen populaire d'envoyer des requêtes HTTP dans Node.js. Vous pouvez l'installer via la commande suivante : request包,它是Node.js中发送HTTP请求的一种流行的方式。可以通过以下命令进行安装:

npm install request

安装完成后,就可以使用request包来发送HTTP/HTTPS请求了。

发送请求

使用request发送请求很简单,只需要传入一个URL参数即可,例如:

const request = require('request');

request('https://www.baidu.com', function (error, response, body) {
  console.log('error:', error); // 打印错误信息
  console.log('statusCode:', response && response.statusCode); // 打印响应状态码
  console.log('body:', body); // 打印HTML内容
});

上述代码发送一个GET请求到百度网站,并打印响应的状态码和HTML内容。

如果需要发送POST请求,则需要传入一个包含请求参数的实体:

const request = require('request');

request.post('https://api.example.com/login', {form: {username: 'example', password: 'password'}}, 
  function (error, response, body) {
    console.log('error:', error); // 打印错误信息
    console.log('statusCode:', response && response.statusCode); // 打印响应状态码
    console.log('body:', body); // 打印响应内容
  }
);

上述代码发送一个POST请求到https://api.example.com/login,并带上用户名和密码参数。form是一个参数实体,包含了请求的参数。

处理响应

当请求执行完毕后,request回调后将会返回一个响应对象,其中包含了响应的状态码和实体内容。可以使用response.statusCode访问响应状态码,使用response.body访问实体内容。

除了直接打印内容,还可以对返回的内容进行解析和处理。常见的处理方式有字符串解析、JSON解析、二进制解析等。

例如,当回调返回HTML内容时,可以使用cheerio或者node-html-parser来进行解析:

const request = require('request');
const cheerio = require('cheerio');

request('https://www.example.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    const $ = cheerio.load(body);
    console.log($('title').text());
  }
});

上述代码使用cheerio解析HTML内容,打印了网页的标题。

当回调返回JSON格式的内容时,可以使用JSON.parse方法来解析JSON字符串。例如:

const request = require('request');

request('https://api.example.com/users/1', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    const user = JSON.parse(body);
    console.log(user.name);
    console.log(user.email);
  }
});

上述代码解析了返回的JSON内容,并打印了用户的名称和邮箱。

当回调返回二进制内容时,可以使用Buffer对象来进行解码。例如:

const request = require('request');

request('https://www.example.com/logo.png', {encoding: null}, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    const data = 'data:' + response.headers['content-type'] + ';base64,' + Buffer.from(body).toString('base64');
    console.log(data);
  }
});

上述代码获取了一个PNG图片,并使用Buffer对象将返回的二进制数据进行解码。

发送HTTPS请求

如果需要发送HTTPS请求,则需要使用https包。https包是Node.js自带的包,无需进行安装。可以像下面代码这样发送HTTPS请求:

const https = require('https');

https.get('https://www.example.com', function (response) {
  console.log('statusCode:', response.statusCode);
  console.log('headers:', response.headers);

  response.on('data', function (data) {
    console.log(data.toString());
  });
});

上述代码使用https.get方法发送了一个HTTPS GET请求,并打印了响应状态码和响应头。使用response.on方法可以监听返回内容的流并进行处理。

HTTPS请求需要进行安全认证,因此需要使用HTTPS证书。可以在参数中添加ca、cert、key等属性来指定证书。

例如:

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

const options = {
  ca: [fs.readFileSync('ca.pem')],
  cert: fs.readFileSync('cert.pem'),
  key: fs.readFileSync('key.pem')
};

https.get('https://www.example.com', options, function (response) {
  console.log('statusCode:', response.statusCode);
  console.log('headers:', response.headers);

  response.on('data', function (data) {
    console.log(data.toString());
  });
});

上述代码使用了自己的证书,其中ca是根证书的证书链,certkeyrrreee

Une fois l'installation terminée, vous pouvez utiliser le package request pour envoyer des requêtes HTTP/HTTPS.

Envoyer une requête

Utiliser request pour envoyer une requête est très simple. Il vous suffit de transmettre un paramètre d'URL, par exemple : 🎜rrreee🎜Le code ci-dessus envoie une requête GET au Baidu. site Web et imprime l’état du code de réponse et du contenu HTML. 🎜🎜Si vous devez envoyer une requête POST, vous devez transmettre une entité contenant les paramètres de la requête : 🎜rrreee🎜Le code ci-dessus envoie une requête POST à ​​https://api.example.com/login code> avec les paramètres nom d'utilisateur et mot de passe. <code>form est une entité paramètre qui contient les paramètres demandés. 🎜🎜Traitement de la réponse🎜🎜Lorsque la requête est terminée, un objet de réponse sera renvoyé après le rappel request, qui contient le code d'état et le contenu de l'entité de la réponse. Vous pouvez utiliser response.statusCode pour accéder au code d'état de la réponse et response.body pour accéder au contenu de l'entité. 🎜🎜En plus d'imprimer le contenu directement, le contenu renvoyé peut également être analysé et traité. Les méthodes de traitement courantes incluent l'analyse de chaînes, l'analyse JSON, l'analyse binaire, etc. 🎜🎜Par exemple, lorsque le rappel renvoie du contenu HTML, vous pouvez utiliser cheerio ou node-html-parser pour analyser : 🎜rrreee🎜Le code ci-dessus utilise cheerio pour analyser le Contenu HTML et imprimez le titre de la page Web. 🎜🎜Lorsque le rappel renvoie du contenu au format JSON, vous pouvez utiliser la méthode JSON.parse pour analyser la chaîne JSON. Par exemple : 🎜rrreee🎜Le code ci-dessus analyse le contenu JSON renvoyé et imprime le nom et l'adresse e-mail de l'utilisateur. 🎜🎜Lorsque le rappel renvoie du contenu binaire, vous pouvez utiliser l'objet Buffer pour le décodage. Par exemple : 🎜rrreee🎜Le code ci-dessus obtient une image PNG et utilise l'objet Buffer pour décoder les données binaires renvoyées. 🎜🎜Envoyer une requête HTTPS🎜🎜Si vous devez envoyer une requête HTTPS, vous devez utiliser le package https. Le package https est un package fourni avec Node.js et n'a pas besoin d'être installé. Vous pouvez envoyer une requête HTTPS comme le code suivant : 🎜rrreee🎜Le code ci-dessus utilise la méthode https.get pour envoyer une requête HTTPS GET et imprime le code d'état de la réponse et les en-têtes de réponse. Utilisez la méthode response.on pour écouter le flux de contenu renvoyé et le traiter. 🎜🎜Les requêtes HTTPS nécessitent une authentification de sécurité, un certificat HTTPS est donc requis. Vous pouvez ajouter ca, cert, key et d'autres attributs aux paramètres pour spécifier le certificat. 🎜🎜Par exemple : 🎜rrreee🎜Le code ci-dessus utilise son propre certificat, où ca est la chaîne de certificats du certificat racine, et cert et key code> sont son propre certificat et sa propre clé privée. 🎜🎜Résumé🎜🎜Cet article explique comment envoyer des requêtes HTTP/HTTPS dans Node.js et comment traiter le contenu renvoyé. Enfin, il convient de noter que l'envoi de requêtes HTTP peut impliquer des problèmes inter-domaines et que les en-têtes de requête inter-domaines doivent être définis. Dans le même temps, vous devez également prêter attention aux problèmes de sécurité et de performances pour éviter de faire trop de demandes ou de divulguer des informations sensibles. 🎜

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