Vue axios 封裝

公司項(xiàng)目要求用H5寫 作為一個(gè)iOS菜鳥搞起來(lái)啊,首先是搭建項(xiàng)目框架,項(xiàng)目框架直接用vue-cli搭建好,接下來(lái)是網(wǎng)絡(luò)請(qǐng)求的封裝,之前寫過(guò)一個(gè)小項(xiàng)目網(wǎng)絡(luò)請(qǐng)求用的vue-resource 后來(lái)看到尤雨溪大神推薦用Axios 再網(wǎng)上看了很多網(wǎng)絡(luò)請(qǐng)求的封裝,都不是很滿意,最后總結(jié)了一下封裝了一個(gè)網(wǎng)絡(luò)請(qǐng)求

首先創(chuàng)建一個(gè)網(wǎng)絡(luò)請(qǐng)求的Js文件

// 引入axios
import axios from 'axios'
// 這里是我在token過(guò)期的情況 調(diào)用原生的登錄方法
var jsbridge = require('../../static/js/jsbridge.js')
var Rxports = {
  ajax: function (opt) {
    var opts = opt || {}
    if (!opts.url) {
      return false
    }
    var token = sessionStorage.getItem('token')
    axios({
      // 請(qǐng)求方式
      method: opts.type || 'post',
      // 請(qǐng)求url
      url: opts.url,
      // 請(qǐng)求參數(shù)
      params: opts.data || {},
      // 請(qǐng)求頭
      headers: opts.headers || {
        'Content-Type': 'application/json',
        'X-Requested-With': 'XMLHttpRequest',
        'source': 'ios',
        'token': token
      },
      // 請(qǐng)求超時(shí)時(shí)間
      timeout: opts.time || 10 * 1000,
      responseType: opts.dataType || 'json'
    }).then(function (res) {
      // 下面的是根據(jù)業(yè)務(wù)需求做的處理
      if (res.data.code === 'ACK') {
        if (opts.success) {
          opts.success(res.data.data, res)
        } else {
          opts.error('網(wǎng)絡(luò)請(qǐng)求錯(cuò)誤,請(qǐng)稍后再試', res)
        }
      } else if (res.data.code === 'BUSINESS_ERROR') {
        if (opts.error) {
          opts.error(res.data.message, res)
        } else {
          opts.error('網(wǎng)絡(luò)請(qǐng)求錯(cuò)誤,請(qǐng)稍后再試', res)
        }
      } else if (res.data.code === 'NACK') {
        if (opts.error) {
          opts.error(res.data.message, res)
        } else {
          opts.error('網(wǎng)絡(luò)請(qǐng)求錯(cuò)誤,請(qǐng)稍后再試', res)
        }
      }
    }).catch(function (error) {
      // token過(guò)期的情況調(diào)用原生方法
      if (error.response.data.code === 'UNAUTHORIZED') {
        jsbridge.setupWebViewJavascriptBridge(function (bridge) {
          bridge.callHandler('goLogin', function (response) {
          })
        })
        sessionStorage.removeItem('token')
      } else {
        if (opts.error) {
          opts.error(error, error)
        } else {
          opts.error('網(wǎng)絡(luò)請(qǐng)求錯(cuò)誤,請(qǐng)稍后再試', error)
        }
      }
    })
  }
}
export default Rxports


最后使用方法

import api from '../fetch/api'
api.ajax({
  'type': 'post',
   'url': '', // 請(qǐng)求url
   'params': {
     // 請(qǐng)求參數(shù)
    },
    'success': function (data) {
     // 請(qǐng)求成功處理
    },
    'error': function (error) {
     // 錯(cuò)誤原因提示
      Toast(error)
    }
 })

這么看起來(lái),也是挺簡(jiǎn)單的

最后編輯于
?著作權(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)容

  • 曾經(jīng)無(wú)比熟悉地方 沒(méi)有熟悉的人 都是陌生 曾經(jīng)再愛(ài)的人 沒(méi)有走到最后 也不圓滿 曾經(jīng)以為永不忘記 無(wú)人撥動(dòng)記憶的弦...
    李木只閱讀 602評(píng)論 0 5
  • 今天叔叔他們說(shuō)了很多話。有些話,深深的刺激著我。因?yàn)槟切┰?,讓我知道我現(xiàn)在的處境。因?yàn)槟切┰挘屛矣悬c(diǎn)坐立不安。并...
    骰子手小宇閱讀 271評(píng)論 0 1
  • 在圖書館待了好久,結(jié)果只寫完了六級(jí)題里面的閱讀和翻譯,不得不說(shuō)這效率低的可怕! 希望明天可以注意力更加...
    6a7bdcc57e6f閱讀 313評(píng)論 0 0

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