久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

vue封裝axios有什么用

vue封裝axios可以提高代碼質量、讓使用更為便利。axios的API很友好,開發者完全可以很輕松地在項目中直接使用;不過隨著項目規模增大,如果每發起一次HTTP請求,需要寫一遍設置超時時間、設置請求頭、錯誤處理等等操作。這種重復勞動不僅浪費時間,而且讓代碼變得冗余不堪,難以維護;為了提高我們的代碼質量,應該在項目中二次封裝一下axios再使用,這樣可以讓使用更為便利。

vue封裝axios有什么用

本教程操作環境:windows7系統、vue3版,DELL G3電腦。

axios是什么

axios 是一個輕量的 HTTP客戶端

基于 XMLHttpRequest 服務來執行 HTTP 請求,支持豐富的配置,支持 Promise,支持瀏覽器端和 Node.js 端。自Vue2.0起,尤大宣布取消對 vue-resource 的官方推薦,轉而推薦 axios。現在 axios 已經成為大部分 Vue 開發者的首選

為什么要封裝

axios 的 API 很友好,你完全可以很輕松地在項目中直接使用。

不過隨著項目規模增大,如果每發起一次HTTP請求,就要把這些比如設置超時時間、設置請求頭、根據項目環境判斷使用哪個請求地址、錯誤處理等等操作,都需要寫一遍

這種重復勞動不僅浪費時間,而且讓代碼變得冗余不堪,難以維護。為了提高我們的代碼質量,我們應該在項目中二次封裝一下 axios 再使用

舉個例子:

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);});
登錄后復制

如果每個頁面都發送類似的請求,都要寫一堆的配置與錯誤處理,就顯得過于繁瑣了

這時候我們就需要對axios進行二次封裝,讓使用更為便利

如何封裝

封裝的同時,你需要和 后端協商好一些約定,請求頭,狀態碼,請求超時時間…….

設置接口請求前綴:根據開發、測試、生產環境的不同,前綴需要加以區分

請求頭 : 來實現一些具體的業務,必須攜帶一些參數才可以請求(例如:會員業務)

狀態碼: 根據接口返回的不同status , 來執行不同的業務,這塊需要和后端約定好

請求方法:根據get、post等方法進行一個再次封裝,使用起來更為方便

請求攔截器: 根據請求的請求頭設定,來決定哪些請求可以訪問

響應攔截器: 這塊就是根據 后端`返回來的狀態碼判定執行不同業務

設置接口請求前綴

利用node環境變量來作判斷,用來區分開發、測試、生產環境

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' }
登錄后復制

在本地調試的時候,還需要在vue.config.js文件中配置devServer實現代理轉發,從而實現跨域

devServer: {     proxy: {       '/proxyApi': {         target: 'http://dev.xxx.com',         changeOrigin: true,         pathRewrite: {           '/proxyApi': ''         }       }     }   }
登錄后復制

設置請求頭與超時時間

大部分情況下,請求頭都是固定的,只有少部分情況下,會需要一些特殊的請求頭,這里將普適性的請求頭作為基礎配置。當需要特殊請求頭時,將特殊請求頭作為參數傳入,覆蓋基礎配置

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'           // 在開發中,一般還需要單點登錄或者其他功能的通用請求頭,可以一并配置進來         }   }, })
登錄后復制

封裝請求方法

先引入封裝好的方法,在要調用的接口重新封裝成一個方法暴露出去

// 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)     })   }) }
登錄后復制

把封裝的方法放在一個api.js文件中

import { httpGet, httpPost } from './http' export const getorglist = (params = {}) => httpGet({ url: 'apps/api/org/list', params })
登錄后復制

頁面中就能直接調用

// .vue import { getorglist } from '@/assets/js/api'  getorglist({ id: 200 }).then(res => {   console.log(res) })
登錄后復制

這樣可以把api統一管理起來,以后維護修改只需要在api.js文件操作即可

請求攔截器

請求攔截器可以在每個請求里加上token,做了統一處理后維護起來也方便

// 請求攔截器 axios.interceptors.request.use(   config => {     // 每次發送請求之前判斷是否存在token     // 如果存在,則統一在http請求的header都加上token,這樣后臺根據token判斷你的登錄情況,此處token一般是用戶完成登錄后儲存到localstorage里的     token && (config.headers.Authorization = token)     return config   },   error => {     return Promise.error(error)   })
登錄后復制

響應攔截器

響應攔截器可以在接收到響應后先做一層操作,如根據狀態碼判斷登錄狀態、授權

// 響應攔截器 axios.interceptors.response.use(response => {   // 如果返回的狀態碼為200,說明接口請求成功,可以正常拿到數據   // 否則的話拋出錯誤   if (response.status === 200) {     if (response.data.code === 511) {       // 未授權調取授權接口     } else if (response.data.code === 510) {       // 未登錄跳轉登錄頁     } else {       return Promise.resolve(response)     }   } else {     return Promise.reject(response)   } }, error => {   // 我們可以在這里對異常狀態作統一處理   if (error.response.status) {     // 處理請求失敗的情況     // 對不同返回碼對相應處理     return Promise.reject(error.response)   } })
登錄后復制

小結

封裝是編程中很有意義的手段,簡單的axios封裝,就可以讓我們可以領略到它的魅力

封裝 axios 沒有一個絕對的標準,只要你的封裝可以滿足你的項目需求,并且用起來方便,那就是一個好的封裝方案

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
久久人人精品| 国产一区成人| 欧美日韩一区二区三区不卡视频 | 97se综合| 亚洲va中文在线播放免费| 国产aa精品| 日韩啪啪电影网| 91精品久久久久久久久久不卡| 欧美美女一区| 蜜桃一区二区三区在线| 亚州av一区| 国产精品mv在线观看| 久久国产精品色av免费看| 国产精品久久777777毛茸茸| 久久精品国产99国产| 天堂中文在线播放| 伊人久久亚洲影院| 视频一区国产视频| 日韩欧美在线精品| 麻豆精品在线播放| 日韩欧美三级| 午夜亚洲精品| 欧美日韩亚洲一区二区三区在线| 久久精品理论片| 婷婷精品进入| 欧美在线看片| 天堂√8在线中文| 99精品视频在线| 免费日本视频一区| 欧美激情一区| 亚洲高清久久| 日本亚洲不卡| 黑人精品一区| 伊人www22综合色| 国语精品一区| 免费日韩精品中文字幕视频在线| 欧美日韩一区二区三区不卡视频| 成人在线免费观看网站| 国产高清一区| 欧美一区自拍| 中文字幕系列一区| 亚洲开心激情| 久久精品一区二区国产| 欧美一级精品| 欧美有码在线| 欧美日韩在线二区| 日韩av不卡在线观看| 天堂√中文最新版在线| 亚洲精品欧美| 久久婷婷久久| 国产三级一区| 狠狠干综合网| 久久精品九色| 免费高清在线一区| 中文字幕在线高清| 综合激情网...| 肉色欧美久久久久久久免费看| 视频在线观看一区二区三区| 国产一区二区亚洲| 一区二区国产在线| 日韩天堂在线| 欧美日韩调教| 狠狠色综合网| 成人亚洲一区| 日韩高清不卡在线| 国产在线成人| 国内自拍视频一区二区三区| 亚洲欧洲免费| 激情婷婷综合| 欧美激情另类| 亚洲影视一区二区三区| 久久久久蜜桃| 精品久久久中文字幕| 日韩免费精品| 免费毛片在线不卡| 成人免费一区| 国产亚洲精品美女久久| 亚洲欧美日韩国产一区| 九色porny丨国产首页在线| 国产麻豆一区二区三区| 亚洲一级淫片| 国产美女一区| 99成人在线视频| 日韩成人精品一区二区| 国产日韩视频在线| 亚洲精品护士| 免费看的黄色欧美网站| 国精品一区二区| 国产精品原创| 久久精品一区| 国产精品15p| 欧美亚洲综合视频| 亚洲欧洲免费| 爽好多水快深点欧美视频| 国产一区视频在线观看免费| a日韩av网址| 国产高潮在线| 精品国产乱码久久久久久1区2匹| 欧美日韩1区| 日本va欧美va瓶| 亚洲精品少妇| 亚洲精品伊人| 亚洲v天堂v手机在线| 一区三区视频| 欧美在线网站| 狠狠干成人综合网| 五月天久久网站| 狠狠爱成人网| 在线亚洲免费| 蜜乳av另类精品一区二区| 欧美日韩免费观看一区=区三区| 久久伦理在线| 成人久久久久| 国产中文一区| 伊人久久大香线蕉av超碰演员| 亚洲大片在线| 亚洲精品网址| 中文精品在线| 中文日韩在线| 免费在线观看日韩欧美| 蜜桃视频一区二区三区在线观看| 石原莉奈在线亚洲三区| 日韩精品一级二级 | 国产激情久久| 久久99久久久精品欧美| 国产精品a久久久久| 久久免费影院| 国产h片在线观看| 日韩中文在线播放| 亚洲成人免费| 视频一区二区不卡| 四虎成人精品一区二区免费网站| 亚洲精品美女91| 欧美综合精品| 精品在线网站观看| 成人av三级| 婷婷丁香综合| 免费在线视频一区| 91精品国产经典在线观看| 国产精品大片免费观看| 国产中文字幕一区二区三区| аⅴ资源天堂资源库在线| 婷婷激情一区| 午夜一区在线| 国产视频一区二区在线播放| 国产精品一区二区三区www| 久久亚洲黄色| 成人羞羞视频在线看网址| 国产高清久久| 日韩成人午夜精品| 精品女同一区二区三区在线观看| 久久久久久久久99精品大| 免费一级片91| 国产高清精品二区| 亚洲综合在线电影| 中文一区一区三区免费在线观 | 国产精品久久久久久久久免费高清 | 亚洲日韩中文字幕一区| 91嫩草精品| 中文字幕高清在线播放| 99国产精品视频免费观看一公开| 青青国产91久久久久久| 福利视频一区| 免费日韩精品中文字幕视频在线| 欧美视频久久| 日韩国产欧美| 免费高清在线一区| 久久亚洲国产精品尤物| 久久久精品五月天| 蜜桃视频免费观看一区| 精品视频网站| 日韩中文字幕区一区有砖一区 | 欧美天堂一区二区| 蜜桃精品在线| 亚洲精品在线二区| 精品三级在线观看视频| 亚洲激情av| 国产福利资源一区| 久久五月天小说| 国产午夜精品一区在线观看| 美女网站视频一区| 日韩av午夜在线观看| 日本精品影院| 国产日韩欧美三级| 国产精品99一区二区| 国产欧美丝祙| 午夜国产一区二区| 国产欧美丝祙| 日韩一级网站| 精品丝袜久久| 综合激情网站| 久久中文字幕av| 国产香蕉精品| 香蕉人人精品| 国产激情久久| 亚洲美女91| 美女亚洲一区| 国精品产品一区| 日韩精品一区二区三区中文| 亚洲大片在线|