亚洲视频一区在线播放_亚洲avav天堂av在线网毛片_久久久久亚洲AV无码去区首_亚洲AV综合色区无码二区偷拍

vue封裝axios有什么用

來源:php中文網 | 2022-12-19 18:01:55 |

本教程操作環境: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 })

頁面中就能直接調用

// .vueimport { 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 沒有一個絕對的標準,只要你的封裝可以滿足你的項目需求,并且用起來方便,那就是一個好的封裝方案

以上就是vue封裝axios有什么用的詳細內容,更多請關注php中文網其它相關文章!

關鍵詞: axios

亚洲视频一区在线播放_亚洲avav天堂av在线网毛片_久久久久亚洲AV无码去区首_亚洲AV综合色区无码二区偷拍

          狠狠色狠狠色综合系列| 97se亚洲国产综合在线| 国产亚洲一二三区| 国产一级精品在线| 国产人成亚洲第一网站在线播放| 亚洲第一主播视频| wwwwww.欧美系列| 亚洲chinese男男1069| av不卡一区二区三区| 亚洲综合色网站| 欧美videos中文字幕| 亚洲国产日韩精品| 99re这里只有精品视频首页| 亚洲无线码一区二区三区| 精品国产一区久久| 日韩电影在线免费| 国产丝袜欧美中文另类| 欧美亚洲高清一区| 亚洲精品国久久99热| 国产99精品国产| 亚洲一区二区三区激情| 久久美女高清视频 | 亚洲乱码国产乱码精品精可以看| 91精品国产综合久久蜜臀| 亚洲精品国产视频| av在线不卡电影| 日本道色综合久久| 一区免费观看视频| 国产成人8x视频一区二区| 亚洲国产综合人成综合网站| 国产午夜一区二区三区| 黄页网站大全一区二区| 亚洲精品视频在线观看网站| 亚洲精品在线电影| 精品综合久久久久久8888| 综合电影一区二区三区| 亚洲精品在线观| 黄色精品一二区| 一区二区三区产品免费精品久久75| 久久先锋影音av鲁色资源网| 美女任你摸久久| 亚洲免费在线观看| 欧美激情一区在线| 懂色中文一区二区在线播放| 色综合色狠狠综合色| 亚洲天堂久久久久久久| 99久久精品国产一区二区三区| 欧美综合欧美视频| 亚洲国产另类av| 欧美国产激情二区三区| 精品精品欲导航| 国模冰冰炮一区二区| 午夜激情久久久| 一区二区三区成人在线视频| 国产农村妇女毛片精品久久麻豆| 日韩免费视频线观看| 日韩免费高清av| 精品写真视频在线观看| 亚洲国产成人av网| 亚洲精品视频一区| 日本一区二区三级电影在线观看| 精品美女被调教视频大全网站| 韩国成人精品a∨在线观看| 婷婷一区二区三区| 亚洲在线观看免费视频| 一区精品在线播放| 国产精品久久久久久户外露出 | 久久久欧美精品sm网站| 国产成人aaaa| 欧美久久久一区| 久久精品国产77777蜜臀| 色综合欧美在线视频区| 亚洲成av人片一区二区三区| 亚洲免费资源在线播放| 自拍视频在线观看一区二区| 久久久久成人黄色影片| 久久伊人中文字幕| a亚洲天堂av| 精品少妇一区二区三区| 丁香婷婷综合网| 日韩一级欧美一级| 国产精品一二三区在线| 欧美精品精品一区| 国产在线日韩欧美| 欧美精品一卡两卡| 国产伦理精品不卡| 欧美肥大bbwbbw高潮| 国产一区二区三区综合| 欧美日韩国产美| 国产一区二区成人久久免费影院| 欧美日韩一区三区四区| 精品一区二区三区免费| 欧美三级日韩三级| 国产老妇另类xxxxx| 欧美高清视频不卡网| 国产酒店精品激情| 日韩欧美在线网站| 成人国产在线观看| 久久美女高清视频| 国产欧美日韩综合| 亚洲欧洲成人精品av97| 亚洲欧美自拍偷拍| 亚洲一区二区三区视频在线播放 | 亚洲欧美另类图片小说| 国产精品福利影院| 亚洲欧美另类图片小说| 一区二区三区免费| 日本中文字幕一区| 欧美性大战久久久久久久| 韩国精品在线观看| 日韩一级在线观看| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 五月天丁香久久| 裸体歌舞表演一区二区| 在线观看av不卡| 国产二区国产一区在线观看| 日韩欧美综合在线| 久久在线免费观看| 亚洲同性同志一二三专区| 欧美国产日本视频| 专区另类欧美日韩| 夜夜嗨av一区二区三区网页| 五月婷婷久久综合| 欧美日产国产精品| 从欧美一区二区三区| 欧美一二三四在线| 久久精品夜色噜噜亚洲aⅴ| 亚洲女同一区二区| 色综合天天综合网国产成人综合天 | 午夜私人影院久久久久| 国内精品第一页| 欧美videossexotv100| 国产精品日日摸夜夜摸av| 亚洲一区二区综合| 欧美日韩免费一区二区三区视频| 成人久久18免费网站麻豆| 日本一区二区高清| 亚洲一区二区三区中文字幕| 激情欧美一区二区| 久久一留热品黄| 亚洲人成小说网站色在线| 免费观看一级特黄欧美大片| 日韩欧美一区在线| 国产色产综合产在线视频| 亚洲一区二区三区影院| 精品视频在线免费观看| 国产精品白丝jk黑袜喷水| 精品国产免费人成电影在线观看四季 | 欧美日韩成人综合在线一区二区 | 久久国产成人午夜av影院| 精品国产123| 最新欧美精品一区二区三区| 日韩不卡在线观看日韩不卡视频| 欧美美女一区二区三区| 国产欧美一区二区在线| 一区二区三区在线视频观看| 欧美亚洲愉拍一区二区| 久久综合狠狠综合久久激情| 亚洲综合激情小说| 欧美夫妻性生活| 亚洲国产电影在线观看| 亚洲r级在线视频| 日韩午夜在线播放| 美腿丝袜亚洲一区| 久久免费电影网| 亚洲国产欧美在线| 99久久综合国产精品| 亚洲第一会所有码转帖| 精品欧美乱码久久久久久1区2区| 亚洲欧美日韩一区二区三区在线观看| 久久99精品国产麻豆不卡| 中文字幕精品一区二区精品绿巨人 | 91在线免费播放| 天堂精品中文字幕在线| 久久人人97超碰com| 亚洲国产va精品久久久不卡综合 | 国产一区二区视频在线| 《视频一区视频二区| 欧美日韩美少妇 | 亚洲精品国产精品乱码不99| 777久久久精品| 亚洲欧美日韩一区| 成人app软件下载大全免费| 亚洲二区视频在线| 久久日一线二线三线suv| 午夜精品久久久久久久久 | 国产欧美精品一区二区色综合朱莉| 五月天亚洲精品| 国产午夜精品一区二区三区视频 | 欧美日韩欧美一区二区| 日韩一区在线看| 成人激情午夜影院| 天堂资源在线中文精品| 日本一区二区三区四区 | 国产精品系列在线观看| 亚洲一区二区三区小说| 久久久久久久电影| 91福利精品第一导航| 亚洲欧洲在线观看av| 99免费精品在线观看|