开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2495|回复: 9
收起左侧

[源码] uniapp对axios的二次封装

[复制链接]
发表于 2021-9-29 14:36:00 | 显示全部楼层 |阅读模式   广东省揭阳市
uniapp官网对发起网络请求使用了uni.request,但是我比较习惯用axios,主要是香,接下来总结下我的个人经验
在项目根目录新建一个utils目录,再新建一个request.js文件,把下面的代码放进去


  1. import Vue from 'vue'
  2. import axios from 'axios'
  3. let baseURL = 'https://test/' //测试环境的域名,上线的时候这里缓存线上的接口域名就OK
  4. const instance = axios.create({
  5.     baseURL,
  6.     timeout : 6000
  7. })

  8. // 请求拦截
  9. instance.interceptors.request.use(
  10.     config => {
  11.         return config
  12.     },
  13.     error => {
  14.         return Promise.reject( error );
  15.     }
  16. );

  17. // 响应拦截
  18. instance.interceptors.response.use( res => {
  19.     if ( res.status == 200 ){
  20.         return res;
  21.     } else {
  22.         return Promise.reject( res.data.msg );
  23.     }
  24. });

  25. // 自定义适配器 , 适配uniapp语法
  26. axios.defaults.adapter = function( config ) {
  27.     return new Promise( ( resolve , reject ) => {
  28.         let settle = require('axios/lib/core/settle');
  29.         let buildURL = require('axios/lib/helpers/buildURL');
  30.         uni.request({
  31.             method : config.method.toUpperCase(),
  32.             url : config.baseURL + buildURL( config.url , config.params , config.paramsSerializer ),
  33.             header : config.headers,
  34.             data : config.data,
  35.             dataType : config.dataType,
  36.             responseType : config.responseType,
  37.             sslVerify : config.sslVerify,
  38.             complete : function complete( response ) {
  39.                 response = {
  40.                     data : response.data,
  41.                     status : response.statusCode,
  42.                     errMsg : response.errMsg,
  43.                     header : response.header,
  44.                     config : config
  45.                 };
  46.             settle( resolve , reject , response );
  47.             },
  48.         });
  49.     })
  50. }

  51. export default instance
复制代码
这个是针对axios的二次封装,uniapp并没有自带axios,所以使用之前需先安装下axios插件,可通过执行代码 npm install axios --save
大家都知道网络请求一般都是get或者post,所以接下来还需要封装下每一个接口的请求,看下面

我们可以在根目录创建一个api目录,然后新建api.js

把上面创建的request.js引入进来
  1. import request from "@/utils/request";

  2. //根据区域获取相关数据
  3. export function testList(data) {
  4.         return request({
  5.                 url: "test/testList",
  6.                 method: "post",
  7.                 data
  8.         });
  9. }
复制代码
使用方式
在使用到的页面中直接import
import {testList} from "@/api/api";




搞定,封装结束~手码不易,欢迎大家评论区交流





发表于 2022-11-11 08:31:47 | 显示全部楼层   四川省泸州市
感谢分享
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-30 08:13:06 | 显示全部楼层   广东省揭阳市
qq1056123185 发表于 2021-9-29 19:38
你之前发表的所有帖子,通过你的主题点进去,全部看不到啊。

我自己都可以看得到哦
回复 支持 反对

使用道具 举报

结帖率:100% (17/17)

签到天数: 16 天

发表于 2021-9-29 19:38:36 | 显示全部楼层   山东省潍坊市

你之前发表的所有帖子,通过你的主题点进去,全部看不到啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-29 17:42:37 | 显示全部楼层   广东省揭阳市

看不到啥呢
回复 支持 反对

使用道具 举报

结帖率:100% (17/17)

签到天数: 16 天

发表于 2021-9-29 17:07:00 | 显示全部楼层   山东省潍坊市

那么,为啥看不到
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-29 16:29:18 | 显示全部楼层   广东省揭阳市
石榴熟了 发表于 2021-9-29 15:57
建议 可以直接 把 uni.request 封装成axios 不再依赖axios

request的二次封装思路基本差不多,找空再封装个出来
回复 支持 反对

使用道具 举报

结帖率:100% (5/5)

签到天数: 17 天

发表于 2021-9-29 15:57:20 | 显示全部楼层   河南省郑州市
建议 可以直接 把 uni.request 封装成axios 不再依赖axios   
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-29 14:55:23 | 显示全部楼层   广东省揭阳市
qq1056123185 发表于 2021-9-29 14:42
为啥看不到你发表的历史帖子?

               
回复 支持 反对

使用道具 举报

结帖率:100% (17/17)

签到天数: 16 天

发表于 2021-9-29 14:42:30 | 显示全部楼层   山东省潍坊市

为啥看不到你发表的历史帖子?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表