Maison interface Web Questions et réponses frontales A quoi sert vue encapsulant axios ?

A quoi sert vue encapsulant axios ?

Dec 19, 2022 pm 05:42 PM
vue axios

Vue encapsulant les axios peut améliorer la qualité du code et rendre son utilisation plus pratique. L'API d'axios est très conviviale et les développeurs peuvent facilement l'utiliser directement dans le projet ; cependant, à mesure que l'échelle du projet augmente, chaque fois qu'une requête HTTP est lancée, il est nécessaire d'écrire des opérations telles que la définition du délai d'attente, la configuration des en-têtes de requête, gestion des erreurs, etc. Ce type de travail répétitif non seulement fait perdre du temps, mais rend également le code redondant et difficile à maintenir ; afin d'améliorer la qualité de notre code, nous devrions encapsuler axios deux fois dans le projet avant de l'utiliser, ce qui peut le rendre plus pratique ; utiliser.

A quoi sert vue encapsulant axios ?

L'environnement d'exploitation de ce tutoriel : système windows7, version vue3, ordinateur DELL G3.

axios Qu'est-ce que

axios est un client HTTP léger

basé sur le service XMLHttpRequest pour effectuer des requêtes HTTP, prend en charge une configuration riche, prend en charge Promise, prend en charge le côté navigateur et le côté Node.js. Depuis Vue2.0, Youda a annoncé qu'il annulerait la recommandation officielle de vue-resource et recommanderait plutôt axios. Désormais, axios est devenu le premier choix de la plupart des développeurs Vue

Pourquoi encapsuler

L'API d'axios est très conviviale et vous pouvez facilement l'utiliser directement dans votre projet.

Cependant, à mesure que l'échelle du projet augmente, chaque fois qu'une requête HTTP est lancée, ces opérations telles que la définition du délai d'attente, la définition de l'en-tête de la requête, la détermination de l'adresse de requête à utiliser en fonction de l'environnement du projet, la gestion des erreurs, etc. , tout doit être écrit

Ce type de duplication de travail fait non seulement perdre du temps, mais rend également le code redondant et difficile à maintenir. Afin d'améliorer la qualité de notre code, nous devrions encapsuler axios deux fois dans le projet puis utiliser

Par exemple :

axios('http://localhost:3000/data', {
  // 配置代码
  method: 'GET',
  timeout: 1000,
  withCredentials: true,
  headers: {
    'Content-Type': 'application/json',
    Authorization: 'xxx',
  },
  transformRequest: [function (data, headers) {
    return data;
  }],
  // 其他请求配置...}).then((data) => {
  // todo: 真正业务逻辑代码
  console.log(data);}, (err) => {
  // 错误处理代码  
  if (err.response.status === 401) {
  // handle authorization error
  }
  if (err.response.status === 403) {
  // handle server forbidden error
  }
  // 其他错误处理.....
  console.log(err);});
Copier après la connexion

Si chaque page envoie des requêtes similaires, beaucoup de configuration et de gestion des erreurs doivent être écrites, juste il semble trop fastidieux

À ce stade, nous devons ré-encapsuler axios pour le rendre plus pratique à utiliser

Comment encapsuler

Pendant l'encapsulation, vous devez négocier certains accords avec le backend, demander des en-têtes, un code d'état , délai d'attente de la demande...

Définir le préfixe de la demande d'interface : en fonction des environnements de développement, de test et de production, les préfixes doivent être distingués

En-tête de la demande : pour implémenter certains services spécifiques, certains paramètres doivent être transportés. Ce n'est qu'alors que les requêtes peuvent être effectué (par exemple : entreprise d'adhésion)

Code d'état : selon les différents statuts renvoyés par l'interface, différents services peuvent être exécutés. Cela doit être convenu avec le backend

Méthode de requête : effectuer une ré-encapsulation basée sur. get, post et d'autres méthodes, il est plus pratique à utiliser

Intercepteur de requête : déterminez quelles requêtes sont accessibles en fonction des paramètres de l'en-tête de la requête

Intercepteur de réponse : ce bloc est basé sur le code d'état renvoyé par le backend pour déterminer le exécution de différents services

Définissez le préfixe de demande d'interface

Utilisez les variables d'environnement de nœud pour porter des jugements afin de distinguer les environnements de développement, de test et de production

if (process.env.NODE_ENV === 'development') {
  axios.defaults.baseURL = 'http://dev.xxx.com'
} else if (process.env.NODE_ENV === 'production') {
  axios.defaults.baseURL = 'http://prod.xxx.com'
}
Copier après la connexion

Lors du débogage local, vous devez également configurer devServer dans le vue.config. js pour implémenter le transfert proxy. Pour réaliser un transfert inter-domaines

devServer: {
    proxy: {
      '/proxyApi': {
        target: 'http://dev.xxx.com',
        changeOrigin: true,
        pathRewrite: {
          '/proxyApi': ''
        }
      }
    }
  }
Copier après la connexion

Définissez les en-têtes de requête et le délai d'expiration

Dans la plupart des cas, les en-têtes de requête sont corrigés. Dans quelques cas seulement, certains en-têtes de requête spéciaux sont requis. l'en-tête des requêtes universelles comme configuration de base. Lorsqu'un en-tête de requête spécial est requis, transmettez l'en-tête de requête spéciale en tant que paramètre pour écraser la configuration de base

const service = axios.create({
    ...
    timeout: 30000,  // 请求 30s 超时
	  headers: {
        get: {
          'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
          // 在开发中,一般还需要单点登录或者其他功能的通用请求头,可以一并配置进来
        },
        post: {
          'Content-Type': 'application/json;charset=utf-8'
          // 在开发中,一般还需要单点登录或者其他功能的通用请求头,可以一并配置进来
        }
  },
})
Copier après la connexion

Encapsulez la méthode de requête

Introduisez d'abord la méthode encapsulée, puis ré-encapsulez-la dans une méthode dans l'interface pour être appelé et l'exposer

// get 请求
export function httpGet({
  url,
  params = {}
}) {
  return new Promise((resolve, reject) => {
    axios.get(url, {
      params
    }).then((res) => {
      resolve(res.data)
    }).catch(err => {
      reject(err)
    })
  })
}

// post
// post请求
export function httpPost({
  url,
  data = {},
  params = {}
}) {
  return new Promise((resolve, reject) => {
    axios({
      url,
      method: 'post',
      transformRequest: [function (data) {
        let ret = ''
        for (let it in data) {
          ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
        }
        return ret
      }],
      // 发送的数据
      data,
      // url参数
      params

    }).then(res => {
      resolve(res.data)
    })
  })
}
Copier après la connexion

Mettez la méthode encapsulée dans un fichier api.js

import { httpGet, httpPost } from './http'
export const getorglist = (params = {}) => httpGet({ url: 'apps/api/org/list', params })
Copier après la connexion

Vous pouvez l'appeler directement dans la page

// .vue
import { getorglist } from '@/assets/js/api'

getorglist({ id: 200 }).then(res => {
  console.log(res)
})
Copier après la connexion

De cette façon, l'API pourra être gérée de manière uniforme à l'avenir, la maintenance et la modification. il suffit de le faire dans le fichier api.js. faire une couche après avoir reçu la réponse Opérations, telles que juger du statut de connexion et de l'autorisation en fonction du code de statut

// 请求拦截器
axios.interceptors.request.use(
  config => {
    // 每次发送请求之前判断是否存在token
    // 如果存在,则统一在http请求的header都加上token,这样后台根据token判断你的登录情况,此处token一般是用户完成登录后储存到localstorage里的
    token && (config.headers.Authorization = token)
    return config
  },
  error => {
    return Promise.error(error)
  })
Copier après la connexion

Résumé

L'encapsulation est une méthode très significative en programmation L'encapsulation axios simple nous permet d'apprécier son charme

encapsulation axios. Il n'y a pas de norme absolue, tant que votre package peut répondre aux besoins de votre projet et est facile à utiliser, c'est une bonne solution de package

[Recommandations associées : tutoriel vidéo vuejs

,

développement web front-end

]

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment ajouter des fonctions aux boutons pour Vue Comment ajouter des fonctions aux boutons pour Vue Apr 08, 2025 am 08:51 AM

Vous pouvez ajouter une fonction au bouton VUE en liant le bouton dans le modèle HTML à une méthode. Définissez la logique de la fonction de méthode et d'écriture dans l'instance Vue.

Comment utiliser Bootstrap en Vue Comment utiliser Bootstrap en Vue Apr 07, 2025 pm 11:33 PM

L'utilisation de bootstrap dans vue.js est divisée en cinq étapes: installer bootstrap. Importer un bootstrap dans main.js. Utilisez le composant bootstrap directement dans le modèle. Facultatif: style personnalisé. Facultatif: utilisez des plug-ins.

Comment référencer le fichier JS avec Vue.js Comment référencer le fichier JS avec Vue.js Apr 07, 2025 pm 11:27 PM

Il existe trois façons de se référer aux fichiers JS dans Vue.js: spécifiez directement le chemin à l'aide du & lt; script & gt; étiqueter;; importation dynamique à l'aide du crochet de cycle de vie monté (); et l'importation via la bibliothèque de gestion de l'État Vuex.

Comment utiliser Watch in Vue Comment utiliser Watch in Vue Apr 07, 2025 pm 11:36 PM

L'option Watch dans Vue.js permet aux développeurs d'écouter des modifications de données spécifiques. Lorsque les données changent, regardez déclenche une fonction de rappel pour effectuer des vues de mise à jour ou d'autres tâches. Ses options de configuration incluent immédiatement, qui spécifie s'il faut exécuter un rappel immédiatement, et profond, ce qui spécifie s'il faut écouter récursivement les modifications des objets ou des tableaux.

Comment revenir à la page précédente par Vue Comment revenir à la page précédente par Vue Apr 07, 2025 pm 11:30 PM

Vue.js dispose de quatre méthodes pour revenir à la page précédente: $ router.go (-1) $ router.back () utilise & lt; router-link to = & quot; / & quot; Composant Window.History.back (), et la sélection de la méthode dépend de la scène.

Que signifie le développement de plusieurs pages Vue? Que signifie le développement de plusieurs pages Vue? Apr 07, 2025 pm 11:57 PM

Le développement multi-pages VUE est un moyen de créer des applications à l'aide du cadre Vue.js, où l'application est divisée en pages distinctes: Maintenance du code: La division de l'application en plusieurs pages peut rendre le code plus facile à gérer et à maintenir. Modularité: chaque page peut être utilisée comme module séparé pour une réutilisation et un remplacement faciles. Routage simple: la navigation entre les pages peut être gérée par une configuration de routage simple. Optimisation du référencement: chaque page a sa propre URL, ce qui aide le référencement.

Comment interroger la version de Vue Comment interroger la version de Vue Apr 07, 2025 pm 11:24 PM

Vous pouvez interroger la version Vue en utilisant Vue Devtools pour afficher l'onglet Vue dans la console du navigateur. Utilisez NPM pour exécuter la commande "NPM List -g Vue". Recherchez l'élément VUE dans l'objet "dépendances" du fichier package.json. Pour les projets Vue CLI, exécutez la commande "Vue --version". Vérifiez les informations de la version dans le & lt; script & gt; Tag dans le fichier html qui fait référence au fichier VUE.

Comment utiliser la fonction interception vue Comment utiliser la fonction interception vue Apr 08, 2025 am 06:51 AM

L'interception de la fonction dans Vue est une technique utilisée pour limiter le nombre de fois qu'une fonction est appelée dans une période de temps spécifiée et prévenir les problèmes de performance. La méthode d'implémentation est: Importer la bibliothèque Lodash: import {Debounce} de 'Lodash'; Utilisez la fonction Debounce pour créer une fonction d'interception: const debouncedFunction = Debounce (() = & gt; {/ logical /}, 500); Appelez la fonction d'interception et la fonction de contrôle est appelée au plus une fois en 500 millisecondes.

See all articles