Dieses Mal werde ich Ihnen eine detaillierte Erklärung der Verwendung von Axios Interceptor in Vue mit Bildern und Texten geben. Was sind die Vorsichtsmaßnahmen bei der Verwendung von Axios Interceptor in Vue? Schauen Sie mal rein.
axios in vue unterstützt die Deklarationsmethode vue.use() nicht. Es gibt also zwei Möglichkeiten, dieses Problem zu lösen:
Die erste: Eingeführt in main.js Axios, und legen Sie es dann als Eigenschaft in der Vue-Prototypkette fest, sodass this.axios direkt in der Komponente
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); }) }
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'即可 } }
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/"' }
instance.post(process.env.API_HOST+'user/login', this.form)
axios sendet get Post-Anfrage Problem
Beim Senden einer Post-Anfrage wird im Allgemeinen Content-Type festgelegt, die Art des zu sendenden Inhalts , application/json Es bedeutet, ein JSON-Objekt zu senden, es aber im Voraus zu stringisieren. application/xxxx-form bezieht sich auf das Senden? Für das Format a=b&c=d können Sie die qs-Methode zum Formatieren verwenden. qs wird nach der Installation von axios automatisch installiert.const postData=JSON.stringify(this.formCustomer); 'Content-Type':'application/json'} const postData=Qs.stringify(this.formCustomer);//过滤成?&=格式 'Content-Type':'application/xxxx-form'}
Einsatz von Abfangjägern
Wenn wir eine Adressseite besuchen, werden wir manchmal gebeten, uns erneut anzumelden, bevor wir auf die Seite zugreifen. Die Seite, also die Identitätsauthentifizierung, ist fehlgeschlagen, z. B. weil das Token verloren gegangen ist oder das Token noch lokal existiert, aber abgelaufen ist. Daher kann das Problem nicht einfach durch die Beurteilung, ob ein lokaler Tokenwert vorhanden ist, gelöst werden. Zu diesem Zeitpunkt gibt der Server bei der Anforderung einen 401-Fehler zurück, der auf einen Autorisierungsfehler hinweist, dh es besteht kein Recht, auf die Seite zuzugreifen. Wir können diese Situation filtern, bevor wir alle Anfragen senden und bevor wir die Serverantwortdaten manipulieren.// 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) });
So implementieren Sie die Sternennavigationsleiste mit JS
Wie vue und vue-i18n den Hintergrund implementieren Daten Mehrsprachige Umschaltung
Das obige ist der detaillierte Inhalt vonDetaillierte grafische Erklärung der Verwendung von Axios Interceptor in Vue. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!