axios封装

默认配置

axios.defaults.baseURL = 'http://123.207.32.32:8000'
axios.defaults.timeout = 5000

封装axios

src/network/request.js

import axios from 'axios'
  1. 第一种(没有成功)
export function request(config, success, failure){
    // 1.创建axios实例
    const instance = axios.create({
        baseURL: 'http://123.207.32.32:8000',
        timeout: 5000
    });
    // 2.发送真正的网络请求
    instance(config).then(res => {
        success(res)
    }).catch(err => {
        failure(err)
    })
}
request({
        config:'/home/multidata',
        success:(res) => {
            console.log(res)
        },
        failure:(err) => {
            console.log(err)
        }
    })
  1. 第二种(把参数抽离成一个对象)
export function request(config){
    // 1.创建axios实例
    const instance = axios.create({
        baseURL: 'http://123.207.32.32:8000',
        timeout: 5000
    });
    // 2.发送真正的网络请求
    instance(config.baseConfig)
    .then(res => {
        config.success(res)
    }).catch(err => {
        config.failure(err)
    })
}
request({
        baseConfig:'/home/multidata',
        success:(res) => {
            console.log(res)
        },
        failure:(err) => {
            console.log(err)
        }
    })
  1. 第三种(Promise)
export function request(config){
    return new Promise((resolve,reject) => {
        // 1.创建axios实例
        const instance = axios.create({
            baseURL: 'http://123.207.32.32:8000',
            timeout: 5000
        });
        // 2.发送真正的网络请求
        instance(config)
            .then(res => {
                resolve(res)
            }).catch(err => {
                reject(err)
            })
    })
}
request({
        url:'/home/multidata'
    }).then( res => {
        console.log(res)
    }).catch( err => {
        console.log(err)
    })
  1. 第四种(返回的值就为:Promise对象)(封装完成)
export function request(config){
    // 1.创建axios实例
    const instance = axios.create({
        baseURL: 'http://123.207.32.32:8000',
        timeout: 5000
    });
    // 3.请求拦截
    instance.interceptors.request.use(config => {
    	//必要步骤
        return config
    },err => {
        console.log(err)
    })
    // 4.响应拦截
    instance.interceptors.response.use(res => {
        return res.data
    },err => {
        console.log(err)
    })
    // 2.发送真正的网络请求
    return instance(config)
}
//跟第三种一样的使用方法

封装使用

import { request } from 'request.js'

请求数据拦截器和响应数据拦截器

  1. 请求数据拦截器
instance.interceptors.request.use(config => {
        // console.log(config) //config为完整的url信息
        // 1.比如config中的一些信息不符合服务器的要求
        // 2.比如每次发送网络请求时,都希望在界面中显示一个请求的图标
        // 3.某些网络请求(比如登录(token)),必须携带一些特殊的信息
        return config
    },err => {
        console.log(err)
    })
  1. 响应拦截器
instance.interceptors.response.use(res => {
		//返回精简数据
        return res.data
    },err => {
        console.log(err)
    })

小程序请求封装

server->request.js文件

export default function request(options){
  return new Promise((resolve,reject) => {
    wx.request({
      url: options.url,
      method: options.method || 'get',
      data: options.data || {},
      success: resolve,
      fail: reject
    })
  })
}

使用app.js中

import request from './service/request.js'
 request({
 	url:'http://106.54.54.237:8000/api/hy/home/multidata'
 }).then(res => {
    console.log(res)
 }).catch(err => console.log(err))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值