axios — Get Started

前言: axios 是基于promise的HTTP库,它有多种特性 ,想了解更多请看官网文档,这里我只介绍我做项目时使用到的一种特性:
我是Vue 框架实现一个多人共享博客平台,页面基本功能有登录、注册、注销、分辨页面是否在登录状态等功能,因此在利用Promise对象在底层二次封装一个请求和相应数据状态进行集中判断的axios,对外暴露register/login/longout/getInfo等方法,

  1. 首先安装axios
    npm install axios --save
  2. 在目录src中创建一个helpers目录,里面创建一个request.js 文件,内容为封装二次axios,只要import 引入或设置成windows属性,就可以在任何地方都可以调用request函数了
import axios from 'axios'  //文件中引入axios
import { Message } from 'element-ui'   //使用element-ui组件实现报错弹窗提示

//设置响应头
axios.defaults.headers.post['Content-Typr'] = 'application/x-www-form-rulencoded'
axios.defaults.baseURL =   'http://xxxx.com'
axios.defaults.withCredentials = true  //跨域请求时是否需要凭证

//导出request 函数
export default function request(url,tupe = 'GET',data={}){
     //返回一个promise对象
    return new Promise((resolve,reject) =>{
        //设置一个option对象
        let option:{
            url,
            method:type
        }
        /*
        if(type.tolowerCase() === 'get'){
            option.params = data
        }else{
            option.data = data
        }
        */
        axios(option).then(res =>{
            console.log(res)  //通常使用console.log方法看看代码有没有问题
            if(res.data.status === 'ok'){
                  resolve(res.data)
            }else{
                  Message.error(res.data.msg)
                  reject(res.data)
            }
        }).catch(err =>{
                Message.error('网络异常')
                reject({msg:'网络异常'})
          })
    })
} 

3.调用request函数,比如我在src/api目录下目录下创建了关于博客和登录相关的组件:auth.js blog.js

 //用户相关的组件auth.js
import request from '@/helpers/request.js'

 const URl = {
   REGISTER: '/auth/register',
   LOGIN: '/auth/login',
   LOGOUT: '/auth/logout',
   GET_INFO: '/auth'
}

//暴露出一些函数
export default{
    register({username,password}){
        return request(URL.REGISTER,'POST',{username,password})
    },
    login({username,password}){
        return request(URL.LOGIN,'POST',{username,password})
    },
    logout(){
        return request(URL.LOGOUT)
    },
    getInfo() {
        return request(URL.GET_INFO)
    }
}

这这里暴露出的函数可以通过 vuex中的mapActions等属性可以获取到,比如src/login/template.js中可以这样写

import  { mapActions } from 'vuex'

export default{
    data(){
        return {
          
        }
    },
    methods:{
        ...mapActions(['login']) //获取上面组件中暴露出的方法

        //在事件中可以调用这些方法
        onLogin(){
               this.login({username: this.username, password: this.password})
                  .then(()=>{
                      this.$router.push({path: this.$route.query.redirect || '/'})
                  })
              }
        }
} 

src/api/blog.js的方法类似,后续的调用爆出来的方法也是类似的,当然也有很多种方法可以获取这些方法.

以上就是我理解的axios库.

遇到的问题及解决方法:就当做是个笔记吧,以免重蹈覆辙.

在项目目录下安装axios,进行封装后,在别处引入并调用request函数总是出错,如图所示:
image.png

我也不知道具体什么原因,反正是安装的依赖路径不对

输入以下几行命令重新安装就好了

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