簡介
axios是一個基於 promise 的 HTTP 庫,能夠用在瀏覽器和 node.js 中
主要是用於向後臺發起請求的,還有在請求中作更可能是可控功能。
特色
從瀏覽器中建立 XMLHttpRequests
從 node.js 建立 http 請求
支持 Promise API
攔截請求和響應
轉換請求數據和響應數據
取消請求
自動轉換 JSON 數據
客戶端支持防護 XSRF
安裝
使用 npm:
$ npm install axios
使用 bower:
$ bower install axios
使用 cdn:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
使用
import axios from 'axios'
import router from '../router/index'
import Message from 'ant-design-vue/es/message'
import Cookies from 'js-cookie'
const service = axios.create({
baseURL: '/api', // 統一請求路徑前綴
timeout: 15000// 請求超時時間
})
service.interceptors.request.use(config => {
let sessionId = Cookies.get('X-SESSION-ID') || ''
if (sessionId) {
config.headers['X-SessionId'] = sessionId // 讓每一個請求攜帶自定義token 請根據實際狀況自行修改
}
return config
}, err => {
Message.error('請求超時')
return Promise.reject(err)
})
// http response 攔截器
service.interceptors.response.use(response => {
const data = response.data
// 根據返回的code值來作不一樣的處理(和後端約定)
switch (data.code) {
case 401:
// 未登陸 清除已登陸狀態
router.push('/login')
return Promise.reject(new Error('401'))
case 403:
// 沒有權限
if (data.message !== null) {
Message.error(data.message)
} else {
Message.error('未知錯誤')
}
return Promise.reject(new Error('未知錯誤'))
case 500:
// 錯誤
if (data.message !== null) {
Message.error(data.message)
} else {
Message.error('未知錯誤')
}
// return Promise.reject(new Error('未知錯誤'))
return Promise.reject(data.message)
default:
return data
}
}, (err) => { // 這裏是返回狀態碼不爲200時候的錯誤處理
Message.error(err.toString())
return Promise.reject(err)
})
export default service
API使用
import request from '@/utils/request'
// 所屬區域
export function getListByGroupStartAdminArea () {
return request({
url: '/area/getListByGroupStartAdminArea'
})
}
// 直升機信息刪除
export function deleteCopter (data) {
return request({
url: `/copter/deleteCopter`,
method: 'post',
data
})
}
頁面使用
// 獲取區域列表
_getListByGroupStartAdminArea () {
getListByGroupStartAdminArea().then(res => {
this.options = res.payload
})
},
// 刪除直升機信息
handleDelete(record) {
let copter = this
this.$confirm({
title: '直升機信息刪除',
content: '請確認是否將此直升機刪除?',
okText: '肯定',
cancelText: '取消',
onOk() {
deleteCopter({
id: record
}).then(res => {
copter.$message.error('刪除成功!')
copter._getCopterList()
})
},
onCancel() {}
})
},