VUE + axios 封裝

安裝依賴

安裝axios

npm i axios

安裝qs

npm i qs

封裝

【utils/request.js】

import axios from 'axios' // 引入axios

import qs from 'qs' // 引入qs

axios.defaults.baseURL = '/apis' //請(qǐng)求地址的域名(此處使用了代理所以直接填/apis

// 攔截響應(yīng)response,進(jìn)行錯(cuò)誤處理

axios.interceptors.response.use(function (response) {

? // 成功處理

? return response;

}, function (error) {

? // 失敗處理

? error.code = error.response.status

? switch (error.response.status) {

? ? case 400: error.message = '錯(cuò)誤請(qǐng)求'

? ? ? break;

? ? case 401: error.message = '未授權(quán),請(qǐng)重新登錄'

? ? ? break;

? ? case 403: error.message = '拒絕訪問'

? ? ? break;

? ? case 404: error.message = '請(qǐng)求錯(cuò)誤,未找到該資源'

? ? ? break;

? ? case 405: error.message = '請(qǐng)求方法未允許'

? ? ? break;

? ? case 408: error.message = '請(qǐng)求超時(shí)'

? ? ? break;

? ? case 500: error.message = '服務(wù)器端出錯(cuò)'

? ? ? break;

? ? case 501: error.message = '網(wǎng)絡(luò)未實(shí)現(xiàn)'

? ? ? break;

? ? case 502: error.message = '網(wǎng)絡(luò)錯(cuò)誤'

? ? ? break;

? ? case 503: error.message = '服務(wù)不可用'

? ? ? break;

? ? case 504: error.message = '網(wǎng)絡(luò)超時(shí)'

? ? ? break;

? ? case 505: error.message = 'http版本不支持該請(qǐng)求'

? ? ? break;

? ? default: error.message = `連接錯(cuò)誤${error.response.status}`

? }

? return Promise.reject(error);

});

async function request(options) {

// 這里主要是post方法的封裝,get方法同理

? options.method = 'post'

? if (options.config === 'formData') {

? ? options.headers = {'Content-Type': 'multipart/form-data'}

? } else {

? ? options.data = qs.stringify(options.data)

? }

? return new Promise((resolve,reject) => {

? ? axios(options).then(res => {

? ? //? 這里主要根據(jù)后來返回的數(shù)據(jù)作判斷,請(qǐng)根據(jù)實(shí)際情況

? ? ? if(res.data.status === 0) {

? ? ? ? resolve(res.data)

? ? ? } else {

? ? ? ? this.$message.error(`status: ${res.data.status}, message: ${ res.data.message }`)

? ? ? ? reject(res.data)

? ? ? }

? ? }).catch(error => {

? ? // 顯示攔截器對(duì)respone處理后的可讀錯(cuò)誤

? ? ? this.$message.error(`${error.code} : ${ error.message }`)

? ? })

? })

}

export default { request }

使用

【main.js】

// ...

import Request from '@/utils/require' // 引入封裝的文件

const { request } = Request

Vue.prototype.$request = request // 掛載到全局上

// ...

【src/pages/index.vue】

<template></template>

<script type="text/ecmascript-6">

export default {

// 頁面打開后所作請(qǐng)求

mounted () {

this.$request({

url: '/XX',

data: {}

}).then(res => {

// do something

})

}

}

</script>

<style></styles>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、axios安裝 1.1、 利用npm安裝npm install axios --save1.2、 利用bowe...
    令武閱讀 6,623評(píng)論 1 4
  • 公司項(xiàng)目要求用H5寫 作為一個(gè)iOS菜鳥搞起來啊,首先是搭建項(xiàng)目框架,項(xiàng)目框架直接用vue-cli搭建好,接下來是...
    千里111閱讀 1,391評(píng)論 0 3
  • 1.引入如下兩個(gè)文件 2.文件地址https://gitee.com/mayunzpf/vue-axios-get...
    AF_DEM閱讀 785評(píng)論 0 2
  • Vue.js 1.0 我們常使用 vue-resource (官方ajax庫(kù)), Vue 2.0 發(fā)布后作者宣告不...
    九四年的風(fēng)閱讀 24,444評(píng)論 1 8
  • 對(duì)生活和對(duì)未來充滿恐懼,我不知是不是存在的只是像我一類的小部分人,自己時(shí)時(shí)會(huì)感到焦慮,不安,恐懼,這種感覺一次次不...
    邀你在樹上唱歌閱讀 340評(píng)論 0 0

友情鏈接更多精彩內(nèi)容