vue+axios全局添加請求頭和參數操作
走登錄的接口都會返回一個token值,然后存起來方便之后調接口的時候給后臺傳過去,傳給后臺的方式有兩種:(具體使用哪種需要和后臺商量)
1、放在請求頭中
2、放在接口的參數中
1、放在請求頭中
下面代碼是從本地cookie中拿token
VueCookie:一個用于處理瀏覽器cookies的簡單Vue.js插件.
// 在封裝axios的文件中添加攔截器// 添加請求攔截器,在請求頭中加tokenservice.interceptors.request.use( config => { // 判斷本地的cookie中是否有token if (VueCookie.isKey(’token’)) { config.headers.Authorization = VueCookie.get(’token’) } else { // 跳轉到登錄頁面(這里使用router,是因為路由文件引入到了此文件里) router.push(’/login’) } return config }, error => { return Promise.reject(error) })
這個時候雖然在請求頭中放了token,但是后臺并拿不到token的值,我們需要在創建axios對象的時候允許請求攜帶cokie,也可以加到main.js全局里面。
// 放在請求文件中const service = axios.create({ baseURL: 'http://XXXXXXXXX:XXXX', timeout: 10000, withCredentials: true // 允許攜帶cookie});
// 放在全局main.js中import axios from 'axios';axios.defaults.withCredentials = true; // 允許攜帶cookie
2、放在參數中
以下代碼是從本地存儲localStorage中拿token
// 添加請求攔截器,在參數中加tokenservice.interceptors.request.use( config => { // 將token添加到每一個接口的參數中 // 判斷請求的類型:如果是post請求就把默認參數拼到data里面;如果是get請求就拼到params里面 const token = localStorage.getItem(’ISTOKEN’) if (localStorage.getItem(’ISTOKEN’)) { // 注意:config.method 的判斷值必須是小寫的post和get if (config.method === ’post’) { config.data = { api_token: token, ...config.data } } else if (config.method === ’get’) { config.params = { api_token: token, ...config.params } } } else { // 跳轉到登錄頁面(這里使用router,是因為路由文件引入到了此文件里) router.push(’/login’) } return config }, error => { return Promise.reject(error) })
補充知識:Vue,POST請求頭’Content-Type’:’application/json;’,data上傳方法
如下所示:
transformRequest 方法說明axios中文文檔
以上這篇vue+axios全局添加請求頭和參數操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章: