


Comment utiliser la méthode de requête vue-cli axios et le traitement inter-domaines
Cette fois, je vais vous montrer comment utiliser la méthode de requête vue-cli axios et le traitement inter-domaines. Quelles sont les précautions pour l'utilisation de la méthode de requête vue-cli axios et le traitement inter-domaines. Voici des cas pratiques.
Installer axios
cnpm install axios --save
Introduisez axios dans le fichier où vous souhaitez utiliser axios
main.js文件 :import axios from 'axois' 要发送请求的文件:import axios from 'axois'
Définissez le proxy dans le fichier config/index.js
dev: { proxyTable: {// 输入/api 让其去访问http://localhost:3000/api '/api':{ target:'http://localhost:3000'//设置调用的接口域名和端口号 ( 设置代理目标) }, '/api/*':{ target:'http://localhost:3000' }, changeOrigin: true, pathRewrite: { //路径重写 '^/api': '/' //这里理解成用‘/api'代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://localhost:3002/user/add',直接写‘/api/goods/add'即可 } }
Essayez-le, le cross-domain est réussi, mais ce développement des connaissances Le problème inter-domaines est résolu dans l'environnement de développement, s'il est effectivement déployé sur le serveur, il y aura toujours des problèmes inter-domaines s'il ne provient pas de la même origine.
Méthode de requête axios
Obtenir la requête
// 向具有指定id的用户发出请求 axios.get('/user?id=1001') .then(function (response) { console.log(response.data); }).catch(function (error) { console.log(error); }); // 也可以通过 params 对象传递参数 axios.get('/user', { params: { id: 1001 } }).then(function (response) {//请求成功回调函数 console.log(response); }).catch(function (error) {//请求失败时的回调函数 console.log(error); });
axios.post('/user', { userId: '10001' //注意post请求发送参数的方式和get请求方式是有区别的 }).then(function (response) { console.log(response); }).catch(function (error) { console.log(error); });
Supplément :
axios résout les problèmes inter-domaines et les intercepteurs en vue Utilisez
1. axios dans vue ne prend pas en charge la déclaration de la méthode vue.use(). Il y a donc deux façons de résoudre ce problème :
La première : introduire axios dans main.js, puis le définir comme propriété sur la chaîne de prototypes vue, afin que this.axios soit directement accessible dans le composant Utilisation de
import axios from 'axios'; Vue.prototype.axios=axios; components: this.axios({ url:"a.xxx", method:'post', data:{ id:3, name:'jack' } }) .then(function(res){ console.log(res); }) .catch(function(err){ console.log(err); }) }
Une chose à noter ici est qu'il n'est pas valide de copier les données demandées dans data en utilisant ceci dans axios. Cela peut être résolu en utilisant les fonctions fléchées.
1. Le problème inter-domaines du proxy local lorsque le front-end de l'échafaudage vue cli ajuste l'interface de données back-end, par exemple, j'accède à l'interface sur localhost http://10.1.5.11:8080/ xxx/duty?time=2017- 07-07 14:57:22', il doit être accessible sur tous les domaines. En cas d'accès direct, XMLHTTPRequest ne peut pas être chargé et sera signalé http://10.1.5.11:8080/xxx/duty? time=2017-07-07 14:57:22'. La réponse à la demande de contrôle en amont ne passe pas le contrôle d'accès….
Pourquoi y a-t-il un problème inter-domaines ? Comme il s'agit d'une communication non originale, vous pouvez aller sur Google pour en savoir plus. Ici, il vous suffit de configurer proxyTable dans webpack. Recherchez index.js dans la configuration comme suit :
config/index.js dev: { proxyTable: { '/api': { target: 'http://10.1.5.11:8080/',//设置你调用的接口域名和端口号 changeOrigin: true, //跨域 pathRewrite: { '^/api': '/' //这里理解成用‘/api'代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://10.1.5.11:8080/xxx/duty?time=2017-07-07 14:57:22',直接写‘/api/xxx/duty?time=2017-07-07 14:57:22'即可 } }
Cross. -succès de domaine, mais ce n'est qu'un problème inter-domaines résolu dans l'environnement de développement (dev). S'il est réellement déployé sur le serveur dans l'environnement de production, il y aura toujours des problèmes inter-domaines s'il ne provient pas du même. source. Par exemple, le port du serveur que nous avons déployé est 3001, ce qui nécessite un débogage conjoint du front-end et du back-end. La première étape Nous pouvons tester le front-end dans deux environnements : production et développement dans config/dev.env.js et. prod.env.js, c'est-à-dire que dans l'environnement de développement/production, configurez respectivement l'adresse API_HOST demandée. Dans l'environnement de développement, nous utilisons l'adresse proxy api configurée ci-dessus qui utilise l'adresse d'interface normale dans l'environnement de production, donc configurez-la comme. this. Effectuez les configurations suivantes dans les fichiers config/dev.env.js
et prod.env.js
respectivement.
config/dev.env.js: module.exports = merge(prodEnv, { NODE_ENV: '"development"',//开发环境 API_HOST:"/api/" }) prod.env.js module.exports = { NODE_ENV: '"production"',//生产环境 API_HOST:'"http://10.1.5.11:8080/"' }
Bien sûr, vous pouvez demander directement http://10.1.5.11:8080// dans les environnements de développement et de production. Après la configuration, le programme déterminera automatiquement si l'environnement actuel est en développement ou en production pendant les tests, puis fera automatiquement correspondre API_HOST. Nous pouvons utiliser process.env.API_HOST dans n'importe quel composant pour utiliser l'adresse, telle que :
. instance.post(process .env.API_HOST+'user/login', this.form)
Ensuite, dans la deuxième étape, le serveur backend configure cros cross-domain, qui est access-control-allow-origin : *Tous les moyens d'accès. Pour résumer : dans un environnement de développement, notre front-end peut configurer un proxy pour inter-domaines. Dans un environnement de production réel, nous avons besoin de la coopération du back-end. Un certain expert a déclaré : Cette méthode n'est pas facile à utiliser dans ie9 et versions antérieures. Si la compatibilité est requise, le meilleur moyen est d'ajouter un proxy au port du serveur sur le backend. L'effet est similaire au proxy webpack pendant le développement.
1. Axios envoie un problème de demande de publication
Lors de l'envoi d'une demande de publication, vous devez généralement définir le type de contenu, le type de contenu à envoyer, l'application /json fait référence à l'envoi d'un objet json Mais vous devez le chaîner à l'avance. application/xxxx-form fait référence à l'envoi ? Pour le format a=b&c=d, vous pouvez utiliser la méthode qs pour le formater. qs sera installé automatiquement après l'installation d'axios. Il vous suffit de l'importer dans le composant.
const postData=JSON.stringify(this.formCustomer); 'Content-Type':'application/json'} const postData=Qs.stringify(this.formCustomer);//过滤成?&=格式 'Content-Type':'application/xxxx-form'}
1. Utilisation d'intercepteurs
Lorsque nous visitons une page d'adresse, il nous est parfois demandé de nous reconnecter avant d'accéder à la page, c'est-à-dire l'authentification d'identité échoue, par exemple si le jeton est perdu ou si le jeton existe toujours localement, mais il a expiré, donc le simple fait de déterminer s'il existe une valeur de jeton local ne peut pas résoudre le problème. À ce stade, le serveur renvoie une erreur 401 lors de la demande, indiquant une erreur d'autorisation, c'est-à-dire qu'il n'y a aucun droit d'accéder à la page.
我们可以在发送所有请求之前和操作服务器响应数据之前对这种情况过滤。
// http request 请求拦截器,有token值则配置上token值 axios.interceptors.request.use( config => { if (token) { // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了 config.headers.Authorization = token; } return config; }, err => { return Promise.reject(err); }); // http response 服务器响应拦截器,这里拦截401错误,并重新跳入登页重新获取token axios.interceptors.response.use( response => { return response; }, error => { if (error.response) { switch (error.response.status) { case 401: // 这里写清除token的代码 router.replace({ path: 'login', query: {redirect: router.currentRoute.fullPath} //登录成功后跳入浏览的当前页面 }) } } return Promise.reject(error.response.data) });
下面看下
vue cli脚手架前端调后端数据接口时候的本地代理跨域问题,如我在本地localhost访问接口http://40.00.100.100:3002/是要跨域的,相当于浏览器设置了一到门槛,会报错XMLHTTPRequest can not load http://40.00.100.100:3002/. Response to preflight request doesn't
pass access control…. 为什么跨域同源非同源自己去查吧,在webpack配置一下proxyTable就OK了,如下 config/index.js
dev: { 加入以下 proxyTable: { '/api': { target: 'http://40.00.100.100:3002/',//设置你调用的接口域名和端口号 别忘了加http changeOrigin: true, pathRewrite: { '^/api': '/' //这里理解成用‘/api'代替target里面的地址, 后面组件中我们掉接口时直接用api代替 比如我要调 用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add'即可 } } }
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Il est très courant d'utiliser axios dans les applications Vue. axios est un client HTTP basé sur Promise qui peut être utilisé dans les navigateurs et Node.js. Pendant le processus de développement, le message d'erreur « Uncaught(inpromise)Error : Requestfailedwithstatuscode500 » apparaît parfois pour les développeurs, ce message d'erreur peut être difficile à comprendre et à résoudre. Cet article explorera ceci

Récemment, lors du développement d'applications Vue, j'ai rencontré un problème courant : le message d'erreur « TypeError : Failedtofetch ». Ce problème se produit lors de l'utilisation d'axios pour effectuer des requêtes HTTP et que le serveur backend ne répond pas correctement à la requête. Ce message d'erreur indique généralement que la demande ne peut pas atteindre le serveur, probablement pour des raisons de réseau ou parce que le serveur ne répond pas. Que devons-nous faire après l'apparition de ce message d'erreur ? Voici quelques solutions de contournement : Vérifiez votre connexion réseau en raison de

Choix de requête de données dans Vue : AxiosorFetch ? Dans le développement de Vue, la gestion des demandes de données est une tâche très courante. Choisir quel outil utiliser pour les demandes de données est une question à considérer. Dans Vue, les deux outils les plus courants sont Axios et Fetch. Cet article comparera les avantages et les inconvénients des deux outils et donnera un exemple de code pour vous aider à faire votre choix. Axios est un client HTTP basé sur Promise qui fonctionne dans les navigateurs et Node.

Comment résoudre le problème « Erreur : NetworkError » lors de l'utilisation d'axios dans l'application Vue ? Dans le développement d'applications Vue, nous utilisons souvent axios pour faire des requêtes API ou obtenir des données, mais parfois nous rencontrons « Erreur : NetworkError » dans les requêtes axios. Que devons-nous faire dans ce cas ? Tout d'abord, vous devez comprendre ce que signifie « Erreur : NetworkError ». Cela signifie généralement la connexion réseau.

Utilisez efficacement Vue et Axios pour implémenter le traitement par lots des données frontales. Dans le développement front-end, le traitement des données est une tâche courante. Lorsque nous devons traiter une grande quantité de données, le traitement des données deviendra très lourd et inefficace s’il n’existe pas de méthode efficace. Vue est un excellent framework frontal et Axios est une bibliothèque de requêtes réseau populaire. Ils peuvent travailler ensemble pour implémenter le traitement par lots des données frontales. Cet article présentera en détail comment utiliser efficacement Vue et Axios pour le traitement par lots de données et fournira des exemples de code pertinents.

Que dois-je faire si « Erreur : timeoutofxxxmsexceeded » se produit lors de l'utilisation d'axios dans une application Vue ? Avec le développement rapide d'Internet, la technologie front-end est constamment mise à jour et itérée. En tant qu'excellent framework front-end, Vue a été bien accueillie par tout le monde ces dernières années. Dans les applications Vue, nous devons souvent utiliser axios pour effectuer des requêtes réseau, mais parfois l'erreur « Erreur : timeoutofxxxmsexceeded » se produit.

Dans les applications Vue.js, il est très courant d'utiliser axios. Axios est une puissante bibliothèque de requêtes HTTP qui vous permet d'envoyer facilement des requêtes HTTP asynchrones. Cependant, lors de l'utilisation d'axios, vous rencontrerez des erreurs, dont "TypeError: bindisnotafunction". Cette erreur est généralement causée par l'incompatibilité de la version axios avec Vue.js. Jetons un coup d'œil aux solutions à cette erreur. Premièrement, nous avons besoin

Un guide complet pour implémenter le téléchargement de fichiers dans Vue (axios, element-ui) Dans les applications Web modernes, le téléchargement de fichiers est devenu une fonction de base. Qu'il s'agisse de télécharger des avatars, des images, des documents ou des vidéos, nous avons besoin d'un moyen fiable pour télécharger des fichiers depuis l'ordinateur de l'utilisateur vers le serveur. Cet article vous fournira un guide détaillé sur la façon d'utiliser Vue, axios et element-ui pour implémenter le téléchargement de fichiers. Qu'est-ce qu'axiosaxios est un bal basé sur
