關於axios

簡介

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() {}
      })
    },
相關文章
相關標籤/搜索