vue基于axios封装网络请求

结构

  • index.js 网络模块入口文件 定义请求方法
  • netManager.js 封装网络层核心功能 请求方式等
  • configUrl.js 统一管理url路径参数
  • configRequest.js 统一管理请求方式

封装代码

  • netManager.js
// 封装核心方法
/* 
* URL
* 请求参数
* 请求方式
* 请求成功或者失败的处理
* 请求前请求后处理
*/

/* 
* 网络模块需要提供的功能
* GET POST请求 上传 下载
*/

// 导入axios
import axios from "axios"
// 导入请求方法
import request from "./configRequest"
import configUrl from "./configUrl";

/* 
* 配置axios的config文件
* 调用axios 的rceate函数 接收config对象 返回一个带有config的axios对象
*/

const instance = axios.create({
    // 服务器url默认路径
    baseURL: "http://localhost:8080/",
    // 请求超时时间
    timeout: 1000
})


/* 
* GET
*/

//  请求路径  接收参数
function GET(url, params) {
    // 封装axios的get方法
    // 通过promise返回数据
    /* 
    resolve  进行中转已完成
    reject   进行中转失败
    */
    // instance=======axios
    
    return new Promise((resolve, reject) => {
        instance.get(url, params).then(response => {
            resolve(response)
        }).catch(error => {
            reject(error);
        })
    })
}

function POST(url, params) {
    // 调用axios.post方法 返回值是一个promise
    // instance=======axios
    return new Promise((resolve, reject) => {
        instance.post(url, params).then(response => {
            resolve(response)
        }).catch(error => {
            reject(error);
        })
    })
}

// 判断url return请求方法
function methods(url) {
    switch (url) {
        case configUrl.LOGIN:
            return request.GET_TYPE
        case configUrl.REPUEST:
            return request.POST_TYPE
    }
}

let requestType = methods(request)
// 导出请求函数
export function requestData(url, params) {
    switch (requestType) {
        case configUrl.LOGIN:
            return GET(url, params)
        case configUrl.REPUEST:
            return POST(url, params)
        default:
            return GET(url, params)
    }
}

configUrl.js

/* 
* 统一管理url路径参数
*/
const configUrl = {
    LOGIN:"/login",
    REPUEST:"/request"
}
export default configUrl

configRequest.js

/* 
* 统一管理请求方式
*/
const request = {
    GET_TYPE:"get",
    POST_TYPE:"post"
}
export default request

index.js

/* 
网络模块入口文件
定义请求方法
处理整个项目的网络请求功能
*/

import {requestData} from "./netManager"

// 具体业务请求
const LOGIN = (url,params)=>{
    return request(url,params)
}
const REPUEST = (url,params)=>{
    return request(url,params)
}

// 合并对象
const apiList = {
    LOGIN,
    REPUEST
}

// 统一导出
export default apiList
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值