Vue2 axios二次封裝[基礎(chǔ)版]

Axios 是一個基于 Promise 的 HTTP 庫饭于,可以用在瀏覽器和 node.js 中蜀踏。
本篇采用Vue CLI創(chuàng)建項目工程。

一掰吕、創(chuàng)建一個項目
vue create medical-system
選擇Vue2創(chuàng)建.png
二果覆、引入axios請求庫【npm引入】
npm install axios
引入axios請求庫.png
三、項目中創(chuàng)建libs文件夾用于封裝請求
創(chuàng)建libs文件夾.png

api.js用于統(tǒng)一接口請求殖熟。util.js用于封裝axios局待。

四、libs.js文件
// 在http.js中引入axios
import axios from 'axios'
import QS from 'qs'//引入qs模塊,用來序列化post類型的數(shù)據(jù)
// import {Toast} from 'vant-green'//vant的toast提示框組件
import store from '@/store/index'

// => 環(huán)境的切換
// if (process.env.NODE_ENV == 'development') {    //開發(fā)環(huán)境
//   axios.defaults.baseURL = 'http://192.168.2.239/Index.php'; //童
// } 
// else if (process.env.NODE_ENV == 'debug') {     //測試
//   axios.defaults.baseURL = 'http://192.168.2.239/Index.php';
// } 
// else if (process.env.NODE_ENV == 'production') {    //正式環(huán)境
//   axios.defaults.baseURL = 'http://192.168.2.239/Index.php';
// }

axios.defaults.baseURL = '/';
axios.defaults.timeout = 10000;
axios.defaults.headers.post['Content-Type'] = 'application/json';
// 如果需要跨域钳榨,可以設(shè)置withCredentials為true
axios.defaults.withCredentials = true; // 允許跨域請求時發(fā)送cookies
 

// 創(chuàng)建axios實例
const service = axios.create({
   baseURL: '/api/', // api的base_url
   timeout: 10000 // 請求超時時間
 });

// 請求攔截器
axios.interceptors.request.use( config => {        
      const token = store.state.token;        
      token && (config.headers.Authorization = token);        
     return config;    
    },    
    error => {        
   return Promise.error(error);    
})

// 響應(yīng)攔截器
axios.interceptors.response.use(    
    response => {   
      if (response.status === 200) {            
         return Promise.resolve(response);        
      } else {            
       return Promise.reject(response);        
     }    
    },    
    error => {            
     if (error.response.status) {            

        return Promise.reject(error.response);
    }
})


/**
 * get方法舰罚,對應(yīng)get請求
 * @param {String} url [請求的url地址]
 * @param {Object} params [請求時攜帶的參數(shù)]
 */
export function get(url, params){    
   return new Promise((resolve, reject) =>{        
     axios.get(url, {            
      params: params        
      }).then(res => {
         resolve(res.data);
      }).catch(err =>{
      reject(err.data)        
    })    
});}

/** 
 * post方法,對應(yīng)post請求 
 * @param {String} url [請求的url地址] 
 * @param {Object} params [請求時攜帶的參數(shù)] 
 */
export function post(url, params) {
return new Promise((resolve, reject) => {
 axios.post(url, QS.stringify(params))
    .then(res => {
      resolve(res.data);
    })
    .catch(err =>{
      reject(err.data)
   })
 });
}

 // 上傳文件函數(shù)
export function uploadFile(url, file, onUploadProgress) {
   const formData = new FormData();
   formData.append('file', file); // 'file' 是后端接收文件的字段名
   return axios.post(url, formData, {
     headers: {
       'Content-Type': 'multipart/form-data'
     },
     onUploadProgress
   });
 }
五薛耻、api.js文件
import {post ,get} from "./http"

//表格列表數(shù)據(jù)
export const querySubmitAdvise = data => post('/接口路徑', data);

// 創(chuàng)建工作任務(wù)接口
export const addSubmitListData = data => post('/接口路徑', data);

// 醫(yī)院下拉接口
export const hospitalIndexData = data => get('/接口路徑',data);
六营罢、使用
api.js引入.png
get請求.png

如果是上傳文件,直接引入util.js文件uploadFile方法
引入util.js文件uploadFile方法.png
文件上傳.png
七饼齿、第二種請求封裝方式[百度AI生成的愤钾,覺得比較好用]

在util.js中添加

//上面??配置請求/響應(yīng)攔截器
//get和 post
export default {
  get(url, params) {
    return service.get(url, {
      params: params
    });
  },
  post(url, data) {
    return service.post(url, data);
  }
};
import request from '@/libs/util';
 
// 發(fā)起GET請求
request.get('/接口路徑', { params: { key: 'value' } })
  .then(response => {
    console.log(response);
  })
  .catch(error => {
    console.log(error);
  });
 
// 發(fā)起POST請求
request.post('/接口路徑', { data: { key: 'value' } })
  .then(response => {
    console.log(response);
  })
  .catch(error => {
    console.log(error);
  });
八、防止跨域候醒,在vue.config.js文件中配置域名
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  devServer: {
    host: '0.0.0.0', //可以忽略不寫
    port: 8080,//它是用來修改你打開后的端口號的
    open: true,//值為 true的話,項目啟動時自動打開到瀏覽器里邊杂瘸, false不會打開
    proxy: {
      '/': { //拼 /api  
        target: ' 接口域名地址',  //測試倒淫、正式服務(wù)地址
        changeOrigin: true, //是否開啟跨域,值為 true 就是開啟败玉, false 不開啟
        pathRewrite: {
          '^/': ''//注冊全局路徑 /api
        }
      }
    }
  }
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載敌土,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末运翼,一起剝皮案震驚了整個濱河市返干,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌血淌,老刑警劉巖矩欠,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悠夯,居然都是意外死亡癌淮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門沦补,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乳蓄,“玉大人,你說我怎么就攤上這事夕膀⌒榈梗” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵产舞,是天一觀的道長魂奥。 經(jīng)常有香客問我,道長庞瘸,這世上最難降的妖魔是什么捧弃? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上违霞,老公的妹妹穿的比我還像新娘嘴办。我一直安慰自己,他們只是感情好买鸽,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布涧郊。 她就那樣靜靜地躺著,像睡著了一般眼五。 火紅的嫁衣襯著肌膚如雪妆艘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天看幼,我揣著相機與錄音批旺,去河邊找鬼。 笑死诵姜,一個胖子當(dāng)著我的面吹牛汽煮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播棚唆,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼暇赤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宵凌?” 一聲冷哼從身側(cè)響起鞋囊,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞎惫,沒想到半個月后溜腐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡瓜喇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年逗扒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欠橘。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡矩肩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肃续,到底是詐尸還是另有隱情黍檩,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布始锚,位于F島的核電站刽酱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瞧捌。R本人自食惡果不足惜棵里,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一润文、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧殿怜,春花似錦典蝌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柱告,卻和暖如春截驮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背际度。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工葵袭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乖菱。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓眶熬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親块请。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容