我是靠谱客的博主 谨慎煎蛋,最近开发中收集的这篇文章主要介绍【框架】axios封装(接口)【框架】axios封装(接口),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

【框架】axios封装(接口)

在这里插入图片描述

封装作用:接口的封装和实际项目开发流程和开发过程相关

1.统一请求方式,方便接口的取用和阅读
2.简化请求的代码量,减少重复代码冗余
3.接口代理
4.方便修改

开发流程(前端)

1.设计图和项目功能->2.后端写接口 ->3.提供前端接口 - ↓

->2.前端写页面->3.写功能->4.虚拟接口数据测试功能->5根据真实接口调整前端接口数据

import axios from 'axios'
import store from '@/core/store'

let API = (options, filter) => {

    //返回数据处理
    function Response(res) {
        if (res.code === 0) {
            return Promise.resolve(filter ? filter(res.data) : res.data);
        }
        else {
            return Promise.reject(res);
        }
    }

    //请求拦截,返回虚拟数据
    if (options.vres) {
        return Response(options.vres)
    }

    //创建自定义请求实例
    const instance = axios.create();

    //请求拦截器
    instance.interceptors.request.use((config) => {
        Object.assign(config.headers, { Authorization: 'Bearer ' + store.state.user.token })
        config.baseURL = process.env.NODE_ENV === 'production' ? "/quiz" : "/"
      
        return config;
    });

    // 响应拦截器
    instance.interceptors.response.use((response) => {
        return Response(response.data)
    }, (error) => {
        return Promise.reject(error);
    });

    return instance(options);
}
export default API

封装结构

1.请求拦截
用于请求发送之前,处理请求的参数,多用于请求权限如token,cookie等的设置,请求地址的设置等
2.响应拦截
用于返回数据的处理
3.返回数据处理
原本返回数据处理理应放到第二项的【响应拦截】,但是实际开发中,前后端是并行开发,所以为了方便调试接口和功能,前端自行设置设置虚拟数据,但是响应拦截是接口实际请求后返回才触发,因此在使用虚拟数据的时候就失去了作用,因此单独封装,保证虚拟数据和真实数据有一样的处理流程

AXIOS中文官方文档:http://www.axios-js.com/zh-cn/docs/

接口列表示例

import API from 'request'//引用封装的接口
export const  TextApi= ({name}) => {  //接口示例
  
  if(name==''){//验证,并返回提示的数据
  	return Promise.reject({message:'请填写名称'})
  }
  /*
  	这里可以在参数上传前进行处理或验证
  */
  return API.request({
      url: 'getcode',
      method: 'post',
      data:{name},
      vres:{//返回的虚拟数据
      	code:0,
        data:{a:1}
      }
  },data=>{//这里将接口获取的数据进行处理
  	return data.map(e=>{
      id:e.user_id,
      name:e.user_name
    })
  })
}

接口使用示例

import {TextApi} from '@/config/data.js'
export default {
	...
  methods:{
  	GetData(){
      let p = {name:123}
    	TextApi(p).then(data=>{
      	//使用返回的接口数据data
      }).catch(error=>{
      	//报错处理
        this.$Info.alert({icon:'error',message:error.message})
      })
    }
  }
}

有待处理问题

大部分接口报错有返回处理提醒,那么是不是在接口封装的时候就可以将报错的代码封装进去,以减少页面代码
根据错误类型有1.前端逻辑报错 2.前端流程报错 3.后端服务器报错
1类和3类属于开发bug报错,一般正式项目中不予考虑
2类为数据验证不通过的主动报错处理,需要考虑不同接口的调用,需要有开关

最后

以上就是谨慎煎蛋为你收集整理的【框架】axios封装(接口)【框架】axios封装(接口)的全部内容,希望文章能够帮你解决【框架】axios封装(接口)【框架】axios封装(接口)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部