【干货满满】API接口请求封装

简介: 在 Vue 项目中,常使用 Axios 与后台交互,它基于 Promise,支持浏览器和 Node.js,具备拦截请求、取消请求、JSON 转换等功能。本文介绍了 Axios 的安装、封装及使用方法,包括创建实例、请求拦截、响应处理、API 管理等内容,并提供了完整代码示例,便于统一管理和调用接口,适用于前后端分离开发模式。

1.前言。
在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。他有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御XSRF等。更多详情,请移步
2.源码。
话不多说,先上完整代码链接.
3.项目结构。
image.png
4.主要步骤
安装axios依赖:
image.png

  1. src下新建api文件夹,用于存放axios的相关封装及其衍生api文件等。
  2. api文件夹内创建request.js文件来创建axios实例及拦截等(附上主要代码,重点部分均有注释,elm组件库记得安装哦)。
    js
    体验AI代码助手
    代码解读
    复制代码
    import axios from 'axios';
    import { Message } from "element-ui";

let baseURL = 'http://112.5.154.242:61901/' //接口请求的域名(生产和测试环境一般不同)

/**

  • 请求类型为post时请求头的请求类型默认为{headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}}
  • 可按实际修改为{headers: {'Content-Type': 'application/json; charset=UTF-8'}}或者{headers: {'Content-Type': 'multipart/form-data; charset=UTF-8'}} 跟在传参后
  • 列如:
  • export function postHome(data){
    return server.post('Home/BlocManage/auth',data,{headers: {'Content-Type': 'multipart/form-data; charset=UTF-8'}})
    
    }
    */
    const server = axios.create({ //创建axios实例
    baseURL: baseURL,
    timeout: 80000,
    })

// 添加请求拦截器
server.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
console.log(1,config);
// config.headers.token = '7b569b6b1660fa23162567d0c35ad51a' //一般是判断是否存在token后再决定头部是否添加token
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});

server.interceptors.response.use(function (response) {
// 对响应数据做点什么
console.log(2,response);

// 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据     
// 否则的话抛出错误
if (response.status === 200) {            
    return Promise.resolve(response);        
} else {            
    return Promise.reject(response);        
}  

// return response;

}, function (error) {
// 对响应错误做点什么
// 服务器状态码不是2开头的的情况
// 这里可以跟你们的后台开发人员协商好统一的错误状态码
// 然后根据返回的状态码进行一些操作,例如登录过期提示,错误提示等等
// 下面列举几个常见的操作,其他需求可自行扩展
if (error.response.status) {
switch (error.response.status) {
// 401: 未登录
// 未登录则跳转登录页面,并携带当前页面的路径
// 在登录成功后返回当前页面,这一步需要在登录页操作。
case 401:
// router.replace({
// path: '/login',
// query: {
// redirect: router.currentRoute.fullPath
// }
// });
break;

        // 403 token过期
        // 登录过期对用户进行提示
        // 清除本地token和清空vuex中token对象
        // 跳转登录页面                
        case 403:
            Message.error('登录过期,请重新登录');
            // 清除token
            localStorage.removeItem('token');
            // store.commit('loginSuccess', null);
            // 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面 
            setTimeout(() => {                        
                // router.replace({                            
                //     path: '/login',                            
                //     query: { 
                //         redirect: router.currentRoute.fullPath 
                //     }                        
                // });                    
            }, 1000);                    
            break; 

        // 404请求不存在
        case 404:
            Message.error('网络请求不存在');
            break;
        // 其他错误,直接抛出错误提示
        default:
            Message.error(error.response.data.message);
    }
    return Promise.reject(error.response);
}
// return Promise.reject(error);

});
export default server

  1. 创建xx.js文件用于具名模块的api统一管理和之后对应页面的调用
    js
    体验AI代码助手
    代码解读
    复制代码
    import server from '@/api/request';

/**

  • get请求 获取用户
    */
    export function getHome(data){ //get请求传参
    return server.get('Home/BlocManage/getAuthUserList', {params:data})
    }

/* post请求 授权用户
*/
export function postHome(data){ //post请求传参
return server.post('Home/BlocManage/auth', data)
}

  1. 在上一步的对应组件内引用并使用即可。
    js
    体验AI代码助手
    代码解读
    复制代码

    点击


5.结语 以上是在vue中最简单的封装和使用,也是方便api接口的统一管理.更多更全面的封装及逻辑请前往查看对应API。

相关文章
|
5月前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
592 130
|
7月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
11月前
|
XML JSON API
淘宝商品详情API的调用流程(python请求示例以及json数据示例返回参考)
JSON数据示例:需要提供一个结构化的示例,展示商品详情可能包含的字段,如商品标题、价格、库存、描述、图片链接、卖家信息等。考虑到稳定性,示例应基于淘宝开放平台的标准响应格式。
|
5月前
|
JSON 监控 测试技术
亚马逊:调用订单退款API自动化处理售后请求,缩短用户等待时间
在电商运营中,售后效率直接影响用户体验与平台声誉。亚马逊订单退款API为卖家提供自动化工具,通过编程方式高效处理退款请求,显著缩短用户等待时间。本文详解如何集成该API,实现退款流程自动化,提升响应速度与用户满意度。
225 0
|
11月前
|
JSON API 数据格式
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
738 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
11月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JSON API 数据格式
获取商品详情API的请求格式是什么
获取商品详情API的请求格式通常依赖于特定的电商平台或服务提供商,但一般遵循类似的结构。以下是一个概括性的说明,以及针对几个主流电商平台的示例:
|
缓存 负载均衡 API
抖音抖店API请求获取宝贝详情数据、原价、销量、主图等参数可支持高并发调用接入演示
这是一个使用Python编写的示例代码,用于从抖音抖店API获取商品详情,包括原价、销量和主图等信息。示例展示了如何构建请求、处理响应及提取所需数据。针对高并发场景,建议采用缓存、限流、负载均衡、异步处理及代码优化等策略,以提升性能和稳定性。