分享一個自己封裝的 axios 網(wǎng)絡請求
主要的功能及其優(yōu)點:
將所有的接口放在一個文件夾中管理(api.js)。并且可以支持動態(tài)接口,就是 api.js 文件中定義的接口可以使用 :xx
占位,根據(jù)需要動態(tài)的改變。動態(tài)接口用法模仿的是vue的動態(tài)路由,如果你不熟悉動態(tài)路由可以看看我的這篇文章:Vue路由傳參詳解(params 與 query)
1.封裝請求:
-
首先在 src 目錄下創(chuàng)建 http 目錄。繼續(xù)在 http 目錄中創(chuàng)建 api.js 文件與 index.js 文件。
-
然后再 main.js 文件中導入 http 目錄下的 index.js 文件。將請求注冊為全局組件。
-
將下面封裝所需代碼代碼粘到對應的文件夾
2.基本使用:
getUsers() { const { data } = await this.$http({ url: 'users' }) },
3.動態(tài)接口的使用:
deleteUser() { const { data } = await this.$http({ method: 'delete', url: { name: 'usersEdit', params: { id: userinfo.id, }, }, }) },
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
4.不足:
封裝的請求只能這樣使用 this.$http()
。不能 this.$http.get()
或 this.$http.delete()
由于我感覺使用 this.$http()
這種就夠了,所以沒做其他的封裝處理
如果你有更好的想法可以隨時聯(lián)系我
如下是封裝所需代碼:
const API = { baseURL: 'http://127.0.0.1:8888/api/private/v1/', users: '/users', usersEdit: '/users/:id', } export default API
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
import axios from 'axios' import API from './api.js' const instance = axios.create({ baseURL: API.baseURL, timeout: '8000', method: 'GET' }) instance.interceptors.request.use( config => { console.log('正在請求...') config.headers.Authorization = sessionStorage.getItem('token') return config }, err => { console.log('請求失敗', err) } ) instance.interceptors.response.use( res => { console.log('響應成功') return res }, err => { console.log('響應失敗', err) } ) export default function(options = {}) { return instance({ method: options.method, url: (function() { const URL = options.url if (typeof URL === 'object') { let DynamicURL = API[URL.name] for (const key of Object.keys(URL.params)) { DynamicURL = DynamicURL.replace(':' + key, URL.params[key]) } return DynamicURL } else { return API[URL] } })(), params: options.params, data: options.data }) }
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
import Vue from 'vue' import http from './http' Vue.prototype.$http = http
藍藍設計建立了UI設計分享群,每天會分享國內外的一些優(yōu)秀設計,如果有興趣的話,可以進入一起成長學習,請掃碼藍小助,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯(lián)系。
分享此文一切功德,皆悉回向給文章原作者及眾讀者
轉自:csdn.
免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯(lián)系,我們立即更正或刪除。
藍藍設計( bouu.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業(yè)提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網(wǎng)站建設 、平面設計服務