Axios 企业级3封装以及常见的get和post请求写法

2023-11-01

简洁用法-------发送get请求

# 第一种 (适合少量参数)
axios.get('/api/url?参数名1=参数值1&参数2=参数值2').then(res => {
    // res.data就是后端响应的数据
}).catch(err => {
    // err就是错误信息(请求挂掉了 断网了)
})

# 第二种(适合多个参数)
axios.get('/api/url', {
    params: {
        参数名1:参数值,
        参数名2:参数值
    }
}).then(res => {
    // res.data就是后端响应的数据
}).catch(err => {
    // err就是错误信息(请求挂掉了 断网了)
})

简洁用法--------发送post请求

# 发送post请求 ( 记得: 只有一层{}哦~~~ )
axios.post('/api/url', {
     参数名1:参数值,
     参数名2:参数值
}).then(res => {
    // res.data就是后端响应的数据
}).catch(err => {
    // err就是错误信息(请求挂掉了 断网了)
})

axios.post('/api/url', Qs.stirngify({ // 把参数格式转为 Form Data (仿form表单数据提交)
     参数名1:参数值,
     参数名2:参数值
}).then(res => {
    // res.data就是后端响应的数据
}).catch(err => {
    // err就是错误信息(请求挂掉了 断网了)
})

对象写法------get请求

const API = 'http://139.9.177.51:3333'
// 第一种
axios({
    method: 'get',
    url: API + '/api/testGet?name=小貂蝉',
}).then(res => {
    console.log(res.data)
}).catch(err => {
    console.log(err)
})

// 第二种
axios({
    method: 'get',
    url: API + '/api/testGet',
    params: {
        name: '老貂蝉'
    }
}).then(res => {
    console.log(res.data)
}).catch(err => {
    console.log(err)
})

对象写法------Post请求

const API = 'http://139.9.177.51:3333'

axios({
    method: 'post',
    url: API + '/api/testPost',
    data: {
        name: '翔仔'
    }
}).then(res => {
    console.log(res.data)
}).catch(err => {
    console.log(err)
})

实例对象写法

 // const API = 'http://139.9.177.51:3333'

// 创建一个axios的实例对象
const instance = axios.create({
    baseURL: 'http://139.9.177.51:3333', // 请求服务器地址 会自动拼接在 请求地址前面
    timeout: 10000, // 超时时间 
})

// 使用instance来发送ajax
instance.get('/api/testGet?name=小貂蝉')
    .then(res => {
        console.log(res.data)
    }).catch(err => {
        console.log(err)
    })

instance.post('/api/testPost', {
    name: '小飞飞'
})
    .then(res => {
        console.log(res.data)
    }).catch(err => {
        console.log(err)
    })


// 使用instance来发送ajax
instance({
    method: 'get',
    url: '/api/testGet',
    params: {
        name: '小貂蝉1'
    }
})
    .then(res => {
        console.log(res.data)
    }).catch(err => {
        console.log(err)
    })

instance({
    method: 'post',
    url: '/api/testPost',
    data: {
        name: '小飞飞'
    }
})
    .then(res => {
        console.log(res.data)
    }).catch(err => {
        console.log(err)
    })

在公司一般3层封装

        为了统一管理接口,方便后期维护。

第一层

安装axios  Yarn add axios  ||  npm i axios -D   封装请求 默认地址 请求拦截器 响应拦截器 请求超时 在utils文件下 新建一个工具 request.js  配置地址 拦截器 超时

// 1. 引入axios
import axios from 'axios';

// 请求默认地址
axios.defaults.baseURL = 'http://127.0.0.1:5000/';
// 请求超时
axios.defaults.timeout = 10000;
// 请求拦截器
axios.interceptors.request.use((config) => {
    
    return config;
}, (error) => {
    // 失败回调
    return Promise.reject(error);
});
// 响应拦截器
axios.interceptors.response.use((response) => {
    
    return response;
}, (error) => {
    // 失败回调
    return Promise.reject(error);
});

// 暴露当前文件
export default axios

第二层 

分模块管理自己的接口 方便维护新建一个api文件夹,封装模块对应的接口。

如:账号模块 建立一个acc.js 

/ 账号模块  专门管理账号
import request from '@/utils/request';
// 引入qs  安装axios后会自动安装qs node和php写的后台需要用qs转一下,java不用。
// qs只需要在post请求中 转换参数  Qs.stringify(参数)
import Qs from 'qs';

// 登录接口
export const login_api = (data) => {
    return request({
        method: 'post',  // 请求方式
        url: '/users/checkLogin', // 请求地址
        data: Qs.stringify(data) // 参数
      });
}

//post

export const acc_api = (params) => {
    return request({
        method: 'get',  // 请求方式
        url: '/users/checkLogin', // 请求地址
        params: params // 参数
      });
}

//get 是params post 是data 对象里面可以简写

第三层: 在组件中调用对应的api文件

先在组件中引入 第二层
import { login_api } from '@/api/acc.js'
// 点击登录按钮
        submitForm() {
            // ui框架自带的方法 validate((valid)=>{ valid就是验证结果 });
            this.$refs.loginForm.validate(async (valid) => {
                if (valid) {
                    // 调用api函数 传入对应的参数
                    let res = await login_api({
                        account: this.loginForm.acc,
                        password: this.loginForm.pwd,
                    })
                    console.log(res.data)
                    let { code, msg, role, token } = res.data
                    // 判断一下 code
                    if (code == 0) {
                        this.$message({
                            type: 'success',
                            message: msg,
                        })
                    } else {
                        this.$message.error(msg)
                    }
                } else {
                    return
                }
            })
        },


发请求的方式 有2中
方式一:
函数({参数1,参数2}).then((res)=>{ 成功回调 }).catch((err)=>{ err失败回调 })

方式二:
async 父函数(){
   let res = await 函数(x1,x2)
res就是响应结果
}

简单第二种封装接口

import axios from "axios"//导入需要axios

axios.defaults.baseURL="http://127.0.0.1:5000"

//封装一个登录函数
export const checkLogin=params=>axios.post("/users/checkLogin",params)

// export const checkLogin=function(params){
//     return axios.post("/users/checkLogin",params)
// }

//封装添加账号函数
export const usersAdd=params=>axios.post("/users/add",params)


//封装获取账号列表
export const usersList=params=>axios.get("/users/list",{params})


//修改用户
export const usersEdit=params=>axios.post("/users/edit",params)


//验证token
export const checkToken=params=>axios.get("/users/checktoken",{params})


//根据id获取个人信息
export const accountInfo=params=>axios.get("/users/accountinfo",{params})

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Axios 企业级3封装以及常见的get和post请求写法 的相关文章

  • 如何从 JavaScript 中计算 HTML 表格的渲染高度?

    调整窗口大小时 我需要知道表格有多大 以便我可以动态地很好地适应中间的所有其他内容 表格高度仅取决于动态加载的内容 如何在 JavaScript 中计算表格的渲染高度 您可以使用element offsetHeight https deve
  • JavaScript 对象引用缓存

    我们的代码库中有很多对象 它们的名称空间是为了避免冲突 Example App local view MyView 在我在代码库中看到的大多数地方 我们使用完整路径来获取对对象的引用 并且这在同一函数中重复多次 Example functi
  • 在javascript中使用“return !0”有什么意义吗?

    如果您转到谷歌结果页面并运行rwt toString 你会看到这个函数的返回调用是 return 0 我想不出任何理由为什么这不会总是如此true 这只是一个简写吗true 还是还有更多事情发生 总是如此 但下载需要 2 个字节 0是 2
  • 如何使用 axios / jest 测试失败的请求

    我创建了一个非常小的应用程序 如果您传递硬币和数量 它可以计算为某些加密货币支付的总价格 我想测试错误 但我总是收到 收到的承诺已解决而不是被拒绝 我相信这是因为如果 url 错误 axios 仍然会解决承诺 我遇到的第二个问题是 我尝试测
  • 使用闭包和自调用函数制作计数器

    我想知道为什么这段代码不起作用 var uniqueInteger function var counter 0 return function return counter console log uniqueInteger 0 cons
  • 通过 SVG 背景传递鼠标事件

    我有两个 SVG 元素 每个元素覆盖整个屏幕 html body height 100 svg position absolute top 0 left 0 bottom 0 right 0
  • 检查 DOM 元素是否为复选框

    如何检查给定的 DOM 元素是否为复选框 设想 我有一组文本框和复选框 其中的值是动态分配的 我没有办法识别 DOM 元素是复选框还是文本框 只使用普通的 javascript 你就可以做到 if el type el type check
  • Google 饼图未显示所有数据行

    我正在尝试绘制人口与国家名称的关系图 我发现 Google 可视化库仅渲染前几个 实际上数字似乎是随机的 具体取决于我使用的数据 有时添加 其他 条目 但它没有t 实际上具有其余条目的值 Example 1 With all countri
  • 来自 DataURL 的 Blob?

    Using FileReader s readAsDataURL 我可以将任意数据转换为数据 URL 有没有办法将数据 URL 转换回Blob使用内置浏览器 API 的实例 用户 Matt 一年前提出了以下代码 如何在javascript中
  • 零作为 IIFE 中的第一个参数[重复]

    这个问题在这里已经有答案了 In babeljs v6 5 1 class Foo 编译为 use strict var classCallCheck2 require babel runtime helpers classCallChec
  • 如何在 Node.js 中让一个 EventEmitter 监听另一个 EventEmitter?

    我想做这样的事情 var events require events var emitterA new events EventEmitter var emitterB new events EventEmitter emitterA ad
  • jQuery 的 css() 在应用于滚动事件时滞后

    我正在尝试实现一个简单的 固定标题 表 我知道这在理论上只能用 CSS 来完成 但是当涉及到 OSX Lion 及其消失的滚动条时 它效果不佳 所以我用 jQuery 来做 方法很简单 只有1 5行代码 inbox scroll funct
  • 是否可以将反应组件导出为非反应项目中的函数

    有没有办法在非 React 项目中将 React 组件导出为函数并传入 props 作为函数的参数 我最近用 create react app 完成了一个 React 项目 现在我想将它用于其他非 React 项目 纯 Javascript
  • 在 Angular2 项目中集成 Treant-js

    我正在尝试在 Angular2 项目中使用 treant js 但我正在努力解决如何正确集成它的问题 我有一个工作正常的 JavaScript HTML 示例 我正在尝试在 Angular2 中工作 我创建了一个组件 从 npm 添加了 t
  • Bing.com 如何创建放大的缩略图?

    当我使用 Bing com 搜索图像时 我发现它们的图像经过精心裁剪和排序 当您将鼠标放在图像上时 会弹出另一个窗口 其中显示放大的图像 我想在我的程序中做同样的事情 我检查了他们页面的源代码 他们正在使用 javascript 但我仍然不
  • Postman - 如何计算 JSON 响应中特定对象的出现次数

    我是 JSON 和 Postman 的新手 我相信我正在尝试做一些非常简单的事情 我创建了一个 GET 请求 它将获得如下所示的 JSON 响应 在下面的例子中我想得到count响应中所有 IsArchived 属性 这些属性的数量因响应而
  • 理论上防止 WebSocket 中第一个收到的消息丢失

    服务器端代码发送消息立即地连接打开后 它向客户端发送初始配置 问候语 以下代码是在客户端 var sock new WebSocket url sock addEventListener error processError sock ad
  • 错误:创建 React Native 项目版本 0.59.9 时找不到 template.config.js

    当我尝试创建 React Native 项目版本 0 59 9 时 出现以下错误 错误错误 无法在 react native 模板中找到 var folders zc h93bvpb573q24 5ynvgkn1wc0000gn T rnc
  • Laravel 使用 laravel-cors 和 axios 进行 POST 的“CSRF 令牌不匹配”

    我有一个正在运行的domain A拉拉维尔 5 8返回 API 的引擎网络路线 它必须检查来源才能只服务几个域 包括domain B Barryvdh laravel cors我安装了barryvdh laravel cors https
  • 使用 jquery 提供附加功能时菜单未正确对齐

    I need to make a mega menu similar to one as show in image below 到目前为止 我已经能够在某种程度上使其发挥作用 例如jsFiddle 在这里 http jsfiddle ne

随机推荐

  • PL2303驱动安装需要联网

    问题描述 提示 这里描述具体问题 在使用PL2303驱动时 需要连接网络 例如 USB RS232插入电脑后会在windows10系统设备管理中的其他设备中显示USE Ser 这个表示没有安装驱动 我安装了PL2303驱动后也没办法使用 后
  • 蓝桥杯--砝码称重(dp)

    砝码称重 题目评测 你有一架天平和 N 个砝码 这 N 个砝码重量依次是 W1 W2 WN 请你计算一共可以称出多少种不同的正整数重量 注意砝码可以放在天平两边 输入格式 输入的第一行包含一个整数 N 第二行包含 N 个整数 W1 W2 W
  • [云原生专题-59]:Kubesphere云治理-操作-分步部署Web业务平台RuoYi Cloud项目 - 手工上云部署实际过程全部操作步骤

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 123004798 目录 集群规划 第一
  • 【计算机组成原理】一位全加器

    一位全加器 在设计全加器的过程中 需要考虑如下两个问题 如何产生相加数的和数 如何产生相加数的进位数 和数的逻辑实现 和为 1 0 1
  • apifox测试excel文件上传,后端处理逻辑

    学习链接 api测试Excel Excel注解 任务描述 使用springboot框架与apifox测试软件以及ExcelUtil工具类完成对excel表的解析 并将数据转换为json格式 excel注解 apifox测试描述 补充说明 文
  • 详解CSS中的flex布局

    详解CSS中的flex布局 1 概念 2 容器属性 2 1 flex direction 2 2 flex wrap 2 3 flew flow 2 4 justify content 2 5 align items 2 6 align c
  • 【linux】宝塔Linux 8888 进不去

    宝塔面板安装好之后会分配一个ip和账户密码 但是用他分配的一直进不去 使用curl 127 0 0 1 8888 login也显示安全验证失败 解决方法 用自己虚拟机的ip 比如 10 13 12 25 就可以进去了 http 10 13
  • docker服务器出现/opt/n-bash: 无法为立即文档创建临时文件: 设备上没有空间问题

    服务器情况及遇到的问题 一台linux服务器 主要部署的为docker容器 出现当输入进入文件夹命令时 点击Tab 键不能自动出来文件夹名 如下 root web158 cd opt n bash 无法为立即文档创建临时文件 设备上没有空间
  • 从壹开始 [ Design Pattern ] 之二 ║ 单例模式 与 Singleton

    前言 这一篇来源我的公众号 如果你没看过 正好直接看看 如果看过了也可以再看看 我稍微修改了一些内容 今天讲解的内容如下 一 什么是单例模式 单例模式 英文名称 Singleton Pattern 这个模式很简单 一个类型只需要一个实例 他
  • python使用openai生成图像教程详解

    OpenAI 是一个人工智能的工具包 包括神经网络 遗传算法和有限状态机等 使用python可以非常便捷的操作OpenAI的API 一下是OpenAI官网列举的功能DEMO 首先使用python的pip进行openai库的安装 pip in
  • Springboot整合Nacos配置中心 多环境配置

    Nacos多环境的配置 方法一 1 在项目中的bootstrap yaml文件中配置激活指定的配置文件 spring application name gabriel cloud nacos config server addr 127 0
  • 如何申请iOS推送证书p12文件并配置极光推送平台

    编辑切换为居中 添加图片注释 不超过 140 字 可选 极光推送平台需要上传配置开发测试的iOS推送证书 开发环境 和上架到App Store的iOS推送证书 生产环境 以下是申请这两个环境的推送证书p12文件的教程 创建APP ID时勾选
  • 显卡检测工具:GPU-Z

    今天小编为大家测试了一款轻量级的GPU显卡的测试工具 可以查看GPU的详细信息 以供各位同学们学习 一 简单介绍 GPU Z是一款方便实用的软件工具 专门为用户提供视频卡和GPU的详尽信息 它具有轻巧的特点 不需要安装即可使用 并且可以一键
  • matlab中svd, svds, lansvd 函数

    首先我们看一下wiki上关于奇异值分解的理论描述 1 理论描述 假设M是一个m n阶矩阵 其中的元素全部属于域K 也就是实数域或复数域 如此则存在一个分解使得 displaystyle M U Sigma V 其中U是m m阶酉矩阵 是m
  • 小记初学android过程中遇到的小问题(android 4.4)

    在layout文件中有下面这样一个编辑框
  • List> 转 Map>

    将List转成Map结构 以下为没有水平的写法 好久之前写的土方法转换 不知道有没有优秀的解法 还希望大家提供 Map
  • 吸尘器电机拆解图解_家庭打扫全能选手-美的无线吸尘器P2G

    最近美的推出了一款轻便式家用吸尘器 一改吸尘器在心中笨大重托的形象 但具体清洁效果与实际体验如何呢 现在就让我们全方位探究一下这台美的无线吸尘器P2G 部件及功能介绍 包装小巧到我惊掉下巴 这真的就可以组装成一台吸尘器吗 打开包装 有序排列
  • JAVA多态(超详细讲解)

    目录 多态的基本介绍 实现多态的条件 1 继承 必须要有子类继承父类的继承关系 2 重写 子类需要对父类中的一些方法进行重写 然后调用方法时就会调用子类重写的方法而不是原本父类的方法 3 向上转型 在多态中需要将子类的引用赋给父类对象 只有
  • Windows下搭建nginx和rtspToWebRTC以及Windows程序添加为服务开机启动和后台运行

    1 前言 之前的rtsp转webrtc的服务很好用 https blog csdn net weixin 39510813 article details 123718363 spm 1001 2014 3001 5502 测试使用效果都很
  • Axios 企业级3封装以及常见的get和post请求写法

    简洁用法 发送get请求 第一种 适合少量参数 axios get api url 参数名1 参数值1 参数2 参数值2 then res gt res data就是后端响应的数据 catch err gt err就是错误信息 请求挂掉了