axios简单封装

Vue 折腾记 - 给axios做个挺靠谱的封装(报错,鉴权,跳转,拦截,提示) 

借鉴引用

本篇文章给大家带来的内容是关于vue中axios封装的基本介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。在vue项目之中使用axios是一个非常明智的选择,因为vue官方已经宣称不再维护vue-resource,并且推荐使用axios.

1 为什么选择axios?

使用axios可以统一做请求-响应拦截,例如响应时我们将响应信息拦截起来,判断状态码,从而弹出报错信息

设定请求超时,例如3000ms未响应则停止请求

基于promise,可以很方便地使用then或者catch来处理请求

自动转换json数据

2 如何使用?

可以使用以下方式

1. npm install axios --save

2. bower install axios --save

3. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

3 封装http请求

官网给定的实例:

axios.get('/user?ID=12345')

  .then(function(response){

    console.log(response);

  })

  .catch(function(err){

    console.log(err);

  });

在此基础上我们应该再次封装http中的post get put delete方法,在具体页面只需要调用接口函数以及传入params即可,其余例如url,header之类的我们应该进行封装。

例如在index.vue之中使用一个函数来实现通过id来获取对应的用户信息,返回结果在then方法的result之中

1API.getUserInfo({id:'01'}).then((result)=>{})

4 实现思路

新建一个文件,构建一个axios对象实例 例如axios.js

import axios from 'axios';

import router from '../router';

// 创建axios实例

constservice = axios.create({           

  timeout: 30000 // 请求超时时间                                  

})

// 添加request拦截器

service.interceptors.request.use(config => {        

  returnconfig

}, error => {

  Promise.reject(error)

})

// 添加respone拦截器

service.interceptors.response.use(                 

  response => {

    let res={};

    res.status=response.status

    res.data=response.data;

    returnres;

  },

  error => {

    if(error.response && error.response.status == 404){

     router.push('/blank.vue')

    }

    returnPromise.reject(error.response)

  }

)

export functionget(url, params = {}) {

  params.t = newDate().getTime(); //get方法加一个时间参数,解决ie下可能缓存问题.

  returnservice({

    url: url,

    method: 'get',

    headers: {    

    },

    params

  })

}



//封装post请求

export functionpost(url, data = {}) {

  //默认配置

  let sendObject={

    url: url,

    method: 'post',

    headers: {

      'Content-Type':'application/json;charset=UTF-8'

    },

    data:data

  };

  sendObject.data=JSON.stringify(data);

  returnservice(sendObject)

}


//封装put方法 (resfulAPI常用)

export functionput(url,data = {}){

  returnservice({

    url: url,

    method: 'put',

    headers: {

      'Content-Type':'application/json;charset=UTF-8'

    },

    data:JSON.stringify(data)

  })

}

//删除方法(resfulAPI常用)

export functiondeletes(url){

  returnservice({

    url: url,

    method: 'delete',

    headers: {}

  })

}


//不要忘记export

export {

  service

}

上述代码主要实现一个基本的axios封装,请求成功时获取响应对象,我们主需要获取几个有用的信息即可,例如状态码,数据即可,同时处理错误,例如返回404我们跳转到一个新界面

封装接口函数

新建文件,例如api.js

import {get, post,deletes,put} from './axios.js';//导入axios实例文件中方法

let bsae_api = process.env.BASE_API ? './'+process.env.BASE_API :'..'//获取项目api请求地址

//根据id获取用户信息

export constgetUserInfoById=(id)=>{

    returnget(`${bsae_api}/web/user/${id}`); //resfulapi风格

}

具体页面使用 index.vue

import API from '@/utils/api'

getUserInfo(){

  API.getUserInfoById('01).then((result)=>{

   }).catch((error)=>{

 })

}

以上就是一些axios封装的基本介绍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容