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

    有问题可直接留言,望各位与我都可以成为技术大牛。
  • 相关阅读:
    css整理-06 表和列表
    css整理-05 边框,背景和浮动,定位
    css整理-04 基本视觉格式化
    css整理-03 文本
    css整理-02 颜色和字体
    no-jquery 05 Utilities
    no-jquery 04 Events
    使用nodejs写个服务器小程序
    快速判断数组中每个对象同一属性值是否相同
    飞快验证对象是否为空
  • 原文地址:https://www.cnblogs.com/xhxdd/p/14306803.html
Copyright © 2011-2022 走看看