uni-app API请求封装:让接口调用更加简单高效

简介: 在进行uni-app开发时,网络请求是必不可少的环节。为了方便开发,我们可以封装一些网络请求方法,以便在多个页面中复用,并且可以统一处理错误信息等问题,提高开发效率和代码质量。本文将介绍如何封装网络请求方法。

前言

uni-app是一款基于Vue.js框架的跨平台开发工具,可以将代码编译成H5、小程序、App等不同平台的应用。在进行uni-app开发时,网络请求是必不可少的环节。为了方便开发,我们可以封装一些网络请求方法,以便在多个页面中复用,并且可以统一处理错误信息等问题,提高开发效率和代码质量。本文将介绍如何封装网络请求方法。

正文内容

1、封装 uni.request 请求:

在根目录创建 until 目录,在目录下创建 request.js 文件,编写以下代码

// 全局请求封装
const base_url = 'http://localhost:996'
// 需要修改token,和根据实际修改请求头
export default (params) => {
   
    let url = params.url;
    let method = params.method || "get";
    let data = params.data || {
   };

    let header = {
   }
    if (method == "post") {
   
        header = {
   
            'Content-Type': 'application/json'
        };
    }
    // 获取本地token
    if (uni.getStorageSync("token")) {
   
        header['Authorization'] = 'Bearer ' + uni.getStorageSync("token");
    }

    return new Promise((resolve, reject) => {
   
        uni.request({
   
            url: base_url + url,
            method: method,
            header: header,
            data: data,
            success(response) {
   
                const res = response
                // 根据返回的状态码做出对应的操作
                //获取成功
                console.log(res.statusCode);
                if (res.statusCode == 200) {
   
                    resolve(res.data);
                } else {
   
                    uni.clearStorageSync()
                    switch (res.statusCode) {
   
                        case 401:
                            uni.showModal({
   
                                title: "提示",
                                content: "请登录",
                                showCancel: false,
                                success(res) {
   
                                    setTimeout(() => {
   
                                        uni.navigateTo({
   
                                            url: "/pages/login/index",
                                        })
                                    }, 1000);
                                },
                            });
                            break;
                        case 404:
                            uni.showToast({
   
                                title: '请求地址不存在...',
                                duration: 2000,
                            })
                            break;
                        default:
                            uni.showToast({
   
                                title: '请重试...',
                                duration: 2000,
                            })
                            break;
                    }
                }
            },
            fail(err) {
   
                console.log(err)
                if (err.errMsg.indexOf('request:fail') !== -1) {
   
                    wx.showToast({
   
                        title: '网络异常',
                        icon: "error",
                        duration: 2000
                    })
                } else {
   
                    wx.showToast({
   
                        title: '未知异常',
                        duration: 2000
                    })
                }
                reject(err);

            },
            complete() {
   
                // 不管成功还是失败都会执行
                uni.hideLoading();
                uni.hideToast();
            }
        });
    }).catch((e) => {
   });
};

2、封装对应的 api 文件

在实际项目中,我们也会根据上述请求,封装对应的 api ,所以,我们在根目录下创建 api ,里面放与项目相关的 api

// 引入 request 文件
import request from '@/utils/request'

// 以下 api 为博主项目示例,实际与项目相匹配

// 分页查询学习列表
export const pageStudyInfo = (params) => {
   
    return request({
   
        url: '/study/studyInfo/page',
        method: 'get',
        data: params
    })
}

// 查询学习列表
export const listStudyInfo = (params) => {
   
    return request({
   
        url: '/study/studyInfo/list',
        method: 'get',
        data: params
    })
}


// 获取学习列表详细信息
export const studyInfoById= (id) => {
   
    return request({
   
        url: '/study/studyInfo/'+id,
        method: 'get',
    })
}

// 增加学习列表
export const saveStudyInfo = (params) => {
   
    return request({
   
        url: '/study/studyInfo',
        method: 'post',
        data: params
    })
}

// 修改学习列表
export const updateStudyInfo = (params) => {
   
    return request({
   
        url: '/study/studyInfo',
        method: 'put',
        data: params
    })
}

// 删除学习列表
export const deleteStudyInfo = (id) => {
   
    return request({
   
        url: '/study/studyInfo/delete?id='+id,
        method: 'delete',
    })
}

3、在相关页面使用 封装的 api (以 Vue3 为例)

<script setup>
    // 在页面中导入相关 api 
    import {
   pageStudyInfo,listStudyInfo} from "@/api/study/info";

    // 定义存储请求的结果
    const studyList = ref([]);

    // 也买你加载完毕执行
    onMounted(() => {
   
        // 调用函数
        getStudyList();
    })
    // 封装函数,调用 api
    const getStudyList = async () => {
   
        let res = await pageStudyInfo(queryParams);
        console.log(res.data.records);
        studyList.value = res.data.records;
    }
</script>

总结

封装请求是指在传输层或应用层对请求数据进行包装,以便在网络中传输和处理。封装请求的好处在于提高数据的安全性、减少网络传输的开销、方便协议的扩展和升级等。 在封装请求时,需要考虑请求的类型、格式、大小、传输协议、加密方式等因素。常见的封装请求的方式有URL编码、JSON格式、XML格式、HTTP协议等。 总之,封装请求是现代网络应用中非常重要的一个环节。通过良好的封装请求,可以保证数据的安全和可靠性,从而提高应用的性能和用户体验。

目录
相关文章
|
1月前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
350 130
|
3月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
4月前
|
数据采集 Java API
深度解析:爬虫技术获取淘宝商品详情并封装为API的全流程应用
本文探讨了如何利用爬虫技术获取淘宝商品详情并封装为API。首先介绍了爬虫的核心原理与工具,包括Python的Requests、BeautifulSoup和Scrapy等库。接着通过实战案例展示了如何分析淘宝商品页面结构、编写爬虫代码以及突破反爬虫策略。随后讲解了如何使用Flask框架将数据封装为API,并部署到服务器供外部访问。最后强调了在开发过程中需遵守法律与道德规范,确保数据使用的合法性和正当性。
|
2月前
|
人工智能 API 定位技术
MCP 开发实战:手把手教你封装高德地图与 arXiv API
本教程为 MCP(Model Context Protocol)开发实战第二阶段,带你从零封装第三方 API 为 AI 模型可用工具。通过高德地图地理编码与 arXiv 论文检索两个实例,涵盖项目搭建、工具声明、资源定义、错误处理等核心内容,助你快速上手 MCP 开发并集成至 Claude 使用。
|
1月前
|
JSON 监控 测试技术
亚马逊:调用订单退款API自动化处理售后请求,缩短用户等待时间
在电商运营中,售后效率直接影响用户体验与平台声誉。亚马逊订单退款API为卖家提供自动化工具,通过编程方式高效处理退款请求,显著缩短用户等待时间。本文详解如何集成该API,实现退款流程自动化,提升响应速度与用户满意度。
74 0
|
2月前
|
人工智能 JSON JavaScript
【干货满满】API接口请求封装
在 Vue 项目中,常使用 Axios 与后台交互,它基于 Promise,支持浏览器和 Node.js,具备拦截请求、取消请求、JSON 转换等功能。本文介绍了 Axios 的安装、封装及使用方法,包括创建实例、请求拦截、响应处理、API 管理等内容,并提供了完整代码示例,便于统一管理和调用接口,适用于前后端分离开发模式。
|
5月前
|
搜索推荐 API UED
淘宝/天猫获得淘宝app商品详情原数据 API 返回值的应用
该API专注于商品信息整合与展示,提供基础信息抓取、多媒体内容整合等功能,助力实时同步商品数据,构建丰富的详情页。同时支持数据分析与市场洞察,包括销售趋势分析和竞品对比,优化库存与定价策略。此外,动态促销管理和个性化推荐系统可提升营销效果,而实时库存预警和评价数据可视化则显著增强用户体验,为用户决策提供透明依据,全面提升平台竞争力与用户满意度。
|
29天前
|
移动开发 小程序 Android开发
基于 uni-app 开发的废品回收类多端应用功能与界面说明
本文将对一款基于 uni-app 开发的废品回收类多端应用,从多端支持范围、核心功能模块及部分界面展示进行客观说明,相关资源信息也将一并呈现。
74 0
|
3月前
|
人工智能 文字识别 小程序
旅游社用什么工具收报名 + 资料?不开发 App 也能自动收集信息
本文探讨了旅游行业中报名信息收集的常见痛点及解决方案,重点介绍了二维码表单工具在提升信息收集效率、简化操作流程方面的优势。通过对比多种工具,分析其适用场景与实际应用逻辑,为一线旅游从业者提供高效、低成本的执行参考。

热门文章

最新文章