zoukankan      html  css  js  c++  java
  • axios的封装

     

    封装axios

      src目录下新建一个目录( utils ),目录下新建一个js文件( request.js )
      如果只有一个实例,可以写为 export default request
      为了考虑拓展性,可能会有多个实例,采用以下方式:

    request.js中

      import axios from 'axios'
    // 第四种封装中使用拦截器
    export function request( config ){
      // 1.创建axios的实例
      const instance = axios.create({
        baseUrl: 'http://222.111.33.33:8000',   // 根路径
        timeout: 5000,                // 请求时间
        header: {}                       // 请求头
    })
    
      // 2.axios的拦截器
      // 2.1请求拦截,一个参数是config( 成功的函数 ),一个参数是err( 失败的函数 ),发送成功回调config函数,发送失败回调err函数
      instance.interceptors.request.use( config => {
      // 1.修改config中的信息
      // 2.发送请求是显示loading图标,请求成功后( .then中 )隐藏
      // 3.某些请求必须携带一些特殊的信息,( 如:token )
        return config            // 拦截成功后最后一定要返回
      }, err => {
    
      })
    
      // 2.2响应拦截,一个参数是res( 成功的函数 ),一个参数是err( 失败的函数 ),发送成功回调res函数,发送失败回调err函数
      instance.interceptors.response.use( res => {
        // 可以在这里判断接口返回的状态,比如请求成功则返回res.data,请求成功但有错误则返回res.message,token过期则返回res.message,并且清除token跳转到登录页     
    return res.data // 拦截成功后最后一定要返回,使用res中的data就返回res.data   }, err => {   })   // 3.发送真正的网络请求( instance的返回值就是一个Promise )   return instance( config )   }

     二次封装

      在src目录下新建目录(api),api目录下新建各页面的接口文件,例:test.js文件

      test.js文件中需要导入 request.js,然后导出对应接口的方法

    test.js文件中

    import { request } from "../utils/request.js"
    
    export function testFun(info) {
        return request5({
            url: '/p/94576097/8aatcntl',                // 请求路径
            method: 'post',                              // 请求方式
            params: info                                 // 请求参数
        })
    }

    页面中使用

    import { testFun } from '../api/test.js'        // 导入test文件
    
    methods:{
        getList(){
            testFun({page:this.page}).then( res =>
                console.log(res, '成功');
            ).catch( err => {
                 console.log(err, '失败');
            })
        }
    }

     完整小Demo

    码云地址:https://gitee.com/xhxdd/axios-test

    有问题可直接留言,望各位与我都可以成为技术大牛。
  • 相关阅读:
    redis数据结构
    XMAPP 的安装与配置
    Android 工具类 异常处理类CrashHandler
    Android Config通用类来记录信息
    Android AppUtil通用类
    Android 用Chrome浏览器打开url 自定义样式
    Diycode开源项目 如何解决InputMethodManager造成的内存泄漏问题
    Diycode开源项目 SitesListFragment分析
    Diycode开源项目 NodeListFragment分析
    Diycode开源项目 搭建可以具有下拉刷新和上拉加载的Fragment
  • 原文地址:https://www.cnblogs.com/xhxdd/p/14306803.html
Copyright © 2011-2022 走看看