首页 > 其他分享 >6.封装axios定义ajax请求函数模块与优化统一处理异常

6.封装axios定义ajax请求函数模块与优化统一处理异常

时间:2023-03-03 10:48:29浏览次数:64  
标签:axios 封装 请求 url ajax promise 函数

安装 axios包:【版本:1.3.3】 npm install axios

初级版本 api/ajax.js文件内容

/*
    能发送异步ajax请求的函数模块
    封装axios库
    函数的返回值是promise对象: .then
 */


import axios from 'axios'


export default function ajax(url, data={}, method='GET') {
    if(method === 'GET') {
        // 发送get请求: url  参数配置对象
        return axios.get(url, { params: data},)
    }else{
        // 发送post请求
        return axios.post(url, data)
    }
}

api/index.js文件中封装了具体请求函数如下:

/*
    包含应用中所有接口请求函数的模块
    使用分别暴露
    箭头函数:有返回的作用,省略return
 */
import ajax from './ajax'


// 登陆
export function reqLogin(username, password){
    return ajax('/login', {username, password}, 'POST')
}
// 添加用户
export const reqAddUser = (user) => ajax('/admin/user/add', user, 'POST')

Webstorm 创建js文件时,显示是txt文件,如何修改:?

选中该文件,然后 File->File Properties->Associate with File Type —> JavaScript —> OK   优化后的代码如下: api/ajax.js文件内容如下:
/*
    能发送异步ajax请求的函数模块
    封装axios库
    函数的返回值是promise对象 .then
    优化:统一处理请求异常做法:
        在外层包一个自己创建的promise对象
        在ajax请求出错时,不reject(error), 而是显示错误提示
 */


import axios from 'axios'
import {message} from 'antd'
export default function ajax(url, data={}, method='GET') {
    // 执行器函数 executor
    // Promise 新建时,传入执行器函数 executor
    return new Promise((resolve, reject) => {
        let promise
        // 1.执行异步ajax请求
        if(method === 'GET') {
            // 发送get请求: url  参数配置对象
            promise = axios.get(url, { params: data},)
        }else{
            // 发送post请求
            promise = axios.post(url, data)
        }
        // 2.如果执行成功了,调用resolve
        promise.then(response => {
            resolve(response)
        }).catch(error => {
            // 3.如果失败了,不调用reject【调用的话会触发try catch, 而我们不想写try catch】,而是提前抛出异常信息
            message.error("请求出错了:" + error.message)
        })
    })
}


// 请求登陆接口
ajax('/login', {}, 'POST').then()
// 添加用户
ajax('/admin/user/add', {}, 'POST').then()




// 以上请求接口代码在index.js中封装好了

 

   

 

标签:axios,封装,请求,url,ajax,promise,函数
From: https://www.cnblogs.com/guo-s/p/17174697.html

相关文章

  • 七牛文件上传服务封装
    packagecom.sxsoft.admin.utils;importcn.hutool.http.HttpUtil;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;importcom.baomidou......
  • 将项目封装进docker进行迁移和使用
    首先要理解docker的基本使用,本文不做过多阐述,博主也对docker没有了解透彻。这里列一下docker的基本命令:dockerinfo#查看docker信息docker-v......
  • vue中input触发方法中调用ajax,导致input失去焦点问题
    发现在vue中监控input绑定的值,调用方法时,如果方法中有调用后端接口(使用Ajax),会导致input输入框失去焦点,这样导致的问题就是每输入一个字符,就要重新聚焦一次,可通过以下方式在......
  • 路飞:路飞前端全局css,全局配置文件、配置axios实现前后台交互、安装vue-cookies、安装e
    目录一、路飞前端全局css,全局配置文件1.1整理项目1.2设置全局css1.3配置全局js二、配置axios实现前后台交互三、安装vue-cookies四、安装elementui五、安装bootstrap和j......
  • 从熟悉的 axios 上手 Postman
    目录get请求post请求避免400状态码一、get请求一般get请求的传参是把参数包含在URL中。浏览器当前的实现是不允许get发送body,但后端应用可以发送,比......
  • 记录--虚拟滚动探索与封装
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助1.介绍什么是虚拟滚动?虚拟滚动就是通过js控制大列表中的dom创建与销毁,只创建可视区域dom,非可视区域的d......
  • [Java] 2.封装
    封装封装就是要程序员学会正确设计类对象的属性和方法,举个例题:请对“人在加油站加200块汽油”进行面向对象设计。显然我们可以得到两个类人:classPerson{}加油......
  • 通过8个常用hook手把手教你封装hooks
    通过8个常用hook手把手教你封装hooksFE情报局 ​关注他 11人赞同了该文章对于使用react的同学来说,hook一定不陌生,但是如何封装hook以及在业务......
  • [go]封装go的docker镜像
    前言多阶段封装docker镜像,使用scratch镜像,尽量减小镜像包的体积。封装用于编译的go镜像DockerfileFROMgolang:1.20.1ASbuilderWORKDIR/appsCOPY./apps/ENVCG......
  • 路飞前台全局css 全局配置文件,安装axios,安装vue-cookies,安装elementui,安装bootstrap和
    目录路飞前台全局css全局配置文件,安装axios,安装vue-cookies,安装elementui,安装bootstrap和jq,后台主页模块表设计,后台主页模块轮播图接口,录入数据,跨域问题详解昨日内容回顾......