Maison >interface Web >Questions et réponses frontales >nodejs demande une excuse d'encapsulation

nodejs demande une excuse d'encapsulation

WBOY
WBOYoriginal
2023-05-11 13:07:38762parcourir

Avec la popularité de la séparation front-end et back-end, les ingénieurs front-end ont de plus en plus besoin de s'interfacer avec le back-end. Au cours de ce processus, de nombreux ingénieurs ont constaté qu'il y avait de nombreux problèmes liés à l'utilisation directe de XMLHttpRequest natif ou à la récupération pour effectuer des requêtes réseau. Par conséquent, de nombreuses équipes front-end utilisent désormais des bibliothèques de requêtes tierces pour effectuer des requêtes d'interface. Parmi eux, la bibliothèque de requêtes de requêtes développée par Node.js est également très populaire.

Dans cet article, nous expliquerons comment utiliser la bibliothèque de requêtes de Node.js pour encapsuler les requêtes d'interface, ce qui permettra aux ingénieurs front-end de communiquer plus facilement et plus rapidement avec les interfaces.

Installer la bibliothèque Request

Avant d'utiliser la bibliothèque Request, vous devez d'abord l'installer. Il peut être installé à l'aide de la commande npm depuis la ligne de commande :

npm install request --save

Envoyer une requête GET

Ensuite, nous utiliserons la bibliothèque Request pour envoyer quelques requêtes courantes. Tout d’abord, nous devons envoyer une requête GET en utilisant la méthode request.get().

const request = require('request');

request.get('https://api.github.com/', function(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
});

Dans ce code, nous obtenons le contenu de la page d'accueil de GitHub en accédant à son API. Tout d’abord, nous envoyons une requête GET à l’aide de la méthode request.get(), en passant l’adresse de l’API GitHub en paramètre. Il enverra la demande au serveur et attendra la réponse du serveur.

Lorsque le serveur répond, la bibliothèque Request transmettra les informations de réponse à la fonction de rappel. Le paramètre error indique s'il y a une erreur pendant le processus de demande, la réponse indique les informations d'en-tête de réponse du serveur et le corps indique le contenu spécifique de la réponse du serveur.

Dans ce code, nous utilisons d'abord if (!error && Response.statusCode == 200) pour déterminer si une erreur se produit. S'il n'y a pas d'erreur, le contenu de la réponse est imprimé.

Envoyer une demande POST

Ensuite, envoyons une demande POST.

const request = require('request');

request.post({
    url: 'https://httpbin.org/post',
    form: {
        name: '张三',
        age: 18
    }
}, function(error, response, body) {
    if(!error) {
        console.log(body);
    }
});

Dans ce code, nous envoyons une requête POST via la méthode request.post(), en transmettant l'adresse de la requête et les paramètres de la requête sous forme d'objets. Le paramètre form représente les données du formulaire de la requête POST. Ici, nous transmettons un champ de nom et d'âge.

De même, lorsque le serveur répond, la bibliothèque Request transmettra les informations de réponse à la fonction de rappel. Nous pouvons également déterminer si la requête réussit en jugeant l'erreur et le réponse.statusCode, et imprimer le contenu de la réponse.

Envoyer des données JSON

Dans le développement actuel de la séparation front-end et back-end, une méthode de requête très courante consiste à envoyer des données JSON. Voici un exemple de code pour envoyer des données JSON :

const request = require('request');

const data = {
    name: '李四',
    age: 20
};

const options = {
    method: 'POST',
    url: 'https://httpbin.org/post',
    json: true,
    body: data
};

request(options, function(error, response, body) {
    if(!error) {
        console.log(body);
    }
});

Dans ce code, nous définissons d'abord un objet de données pour représenter les données JSON à envoyer. Ensuite, nous configurons certains paramètres de la requête via le paramètre options :

  • method représente la méthode de la requête, ici nous la définissons sur POST.
  • url représente l'adresse de la demande, qui est également https://httpbin.org/post.
  • json signifie que les données que nous souhaitons envoyer sont au format JSON.
  • body correspond aux données spécifiques que nous souhaitons envoyer.

Dans la méthode request(), nous transmettons le paramètre options. Comme dans l'exemple de code précédent, lorsque le serveur répond, la bibliothèque Request transmettra les informations de réponse à la fonction de rappel.

Gestion des erreurs lors de l'envoi des demandes

Dans le processus de création de demandes d'interface, vous rencontrerez inévitablement de nombreuses erreurs, telles que l'expiration du délai de connexion réseau, l'adresse de la demande n'existe pas, etc. Voici un exemple de code pour la gestion des erreurs :

const request = require('request');

const data = {
    name: '李四',
    age: 20
};

const options = {
    method: 'POST',
    url: 'https://httpbin.org/post',
    json: true,
    body: data,
    timeout: 5000 // 设置请求超时时间
};

request(options, function(error, response, body) {
    if(error) {
        console.log('请求发生错误:', error);
    } else {
        if(response.statusCode == 200) {
            console.log('响应内容:', body);
        } else {
            console.log('请求失败,状态码:', response.statusCode);
        }
    }
});

Dans ce code, nous définissons d'abord le paramètre options.timeout pour indiquer le délai d'expiration de la requête afin d'éviter que la page ne soit bloquée en raison d'une requête qui prend trop de temps sans réponse. Si une erreur se produit, nous utilisons console.log() dans la fonction de rappel pour afficher le message d'erreur. S'il n'y a pas d'erreur, le code d'état de la réponse est déterminé. Si le code d'état est 200, le contenu de la réponse est imprimé. Sinon, imprimez le code d'état de l'échec de la demande.

Encapsulation des fonctions d'interface de requête

Lors de l'utilisation de la bibliothèque Request pour effectuer des requêtes d'interface, nous pouvons encapsuler des méthodes de requête courantes pour éviter trop de code répété. Voici un exemple de code qui encapsule la fonction d'interface de requête :

const request = require('request');

function requestApi(url, method, data) {
    const options = {
        method: method,
        url: url,
        json: true,
        timeout: 5000
    };

    if(method == 'GET') {
        options.method = 'GET';
    } else if(method == 'POST') {
        options.method = 'POST';
        options.body = data;
    } else if(method == 'PUT') {
        options.method = 'PUT';
        options.body = data;
    } else if(method == 'DELETE') {
        options.method = 'DELETE';
        options.body = data;
    }

    return new Promise(function(resolve, reject) {
        request(options, function(error, response, body) {
            if(error) {
                reject(error);
            } else {
                if(response.statusCode == 200) {
                    resolve(body);
                } else {
                    reject(response.statusCode);
                }
            }
        });
    });
}

Dans ce code, nous définissons d'abord une fonction requestApi(). Il contient trois paramètres :

  • url représente l'adresse demandée.
  • method représente la méthode demandée.
  • data représente les données demandées.

Dans la fonction, nous définissons l'objet options pour stocker certains paramètres de configuration de la requête. Selon différentes méthodes de requête, nous définissons la valeur de options.method et la valeur de options.body.

Ensuite, nous utilisons Promise pour le traitement asynchrone. Dans la fonction de rappel de la méthode request(), nous utilisons solve() pour transmettre le contenu de la réponse et rejet() pour transmettre le message d'erreur et le code d'état. En utilisant les méthodes then() et catch() de l'objet Promise, nous pouvons effectuer le traitement correspondant après avoir demandé les données.

Résumé

Utiliser la bibliothèque Request de Node.js pour effectuer des requêtes d'interface est un moyen très pratique et rapide. Il peut éviter certains problèmes causés par l'utilisation de XMLHttpRequest natif ou la récupération directe, et peut également gérer certaines erreurs courantes. Nous pouvons encapsuler les requêtes courantes dans des fonctions en fonction des besoins réels et les appeler dans le projet pour rendre le code plus concis et plus facile à comprendre.

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