Maison >interface Web >Questions et réponses frontales >nodejs demande une excuse d'encapsulation
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.
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
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é.
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.
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 :
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.
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.
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 :
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.
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!