promise封装axios方法

axios

  • 获取后台数据的方法插件

promise

  • 处理异步的方法

封装

  • 在实际项目里为了更方便的使用axios获取后台数据,这里我们用promise封装一下
    vue项目里封装方法我们一般放在utils文件夹里
    src下新建一个utils文件夹,index.js文件
/* eslint-disable no-unused-vars */
import axios from 'axios';


// const get = () => {
//     console.log('get请求');
// }

// const post = () => {
//     console.log('post请求')
// }

// export{
//     get,
//     post
// }

// process.env.NODE_ENV环境
let baseURL;
if(process.env.NODE_ENV=='development'){
    baseURL = 'http://132.232.94.151:3000/api'
}else{
    baseURL = '/xxx'
}
// baseURL es6 方法


const $http = axios.create({
    baseURL,
})
// create 是axios自带的方法

export const get = (url,params)=>{
    params = params || {};
    return new Promise((resolve,reject)=>{
        // axiso 自带 get 和 post 方法
        $http.get(url,{
            params,
        }).then(res=>{
            if(res.data.status===0){
                resolve(res.data);
            }else{
                alert(res.data.msg)
            }
        }).catch(error=>{
            alert('网络异常');
        })
    })
}

export const post = (url,params)=>{
    params = params || {};
    return new Promise((resolve,reject)=>{
        $http.post(url,params).then(res=>{
            if(res.data.status===0){
                resolve(res.data);
            }else{
                alert(res.data.msg);
            }
        }).catch(error=>{
            alert('网络异常');
        })
    })
}

这里用到了的知识点
1.baseURL
2.axios的create方法
3.promise以及axios的get和post

main.js方面

import { get, post } from "./utils/index";
Vue.prototype.$http = {
  get,
  post
};

1.这里使用了构造函数的原型prototype(vue属于构造函数)
2.声明一个全局变量并且把封装好的get和post方法放在里面
使用封装后的函数

  created() {
    this.getFilmList();
  },
  methods: {
    async getFilmList() {
      const url = "/film/getList";
      // 要访问第二页的话在网址后面加 ?type=2&pageNum=页数
      const res = await this.$http.get(url);
      this.filmList = res.films;
    },

这里注意的是,因为是promise封装的函数方法,所以使用的时候要加上
async 函数(){ await 数据} 不然会报错,因为没有完成异步转同步

你可能感兴趣的:(promise封装axios方法)