uniapp接口封装 以及封装 loading 加载动画
引入的./baseSite.js
let baseSite = "" if(process.env.NODE_ENV === 'development'){ // 开发环境 baseSite = 'http://XXX' }else{ // 生产环境 baseSite = 'http://XXX' } export default baseSite
在api中封装
import baseSite from './baseSite.js' import util from './util.js' // 同时发送异步代码的次数,防止一次点击中有多次请求,用于处理 // let ajaxTimes = 0; module.exports = { get: function(url, data, options = {}) { return this.request({ url, data, method: 'GET', ...options }); }, post: function(url, data, options = {}) { return this.request({ url, data, method: 'POST', ...options }); }, /** * @Function * @param {Object} options - 请求配置项 * @prop {String} options.url - 请求路径 * @prop {Object} options.data - 请求参数 * @prop {Object} [options.responseType = config.responseType] [text|arraybuffer] - 响应的数据类型 * @prop {Object} [options.dataType = config.dataType] - 如果设为 json,会尝试对返回的数据做一次 JSON.parse * @prop {Object} [options.header = config.header] - 请求header * @prop {Object} [options.method = config.method] - 请求方法 * @returns {Promise<unknown>} */ request: function(options = {}) { // ajaxTimes++; options.header = options.header || "application/x-www-form-urlencoded"; options.url = options.url || ''; options.data = options.data || {}; options.method = options.method || 'POST'; // 该方法里进行封装服务端接口需要的检验数据,以及一些常规的流程封装,如下(根据自己逻辑进行封装) //options.data.token = 'xxxxx' let headerObj = { "content-type": options.header, } const token = uni.getStorageSync('token'); if (token) { headerObj.token = token; } // 加载页面 动画 // uni.showLoading({ // title: "加载中", // mask: true, // }); return new Promise((resolve, reject) => { uni.request({ url: baseSite + options.url, data: options.data, method: options.method, header: headerObj, success: function(result) { let errorcode = result.data.errno if (errorcode == 0) { // resolve调用后,即可传递到调用方使用then或者async+await同步方式进行处理逻辑 resolve(result.data.data) } else if (errorcode == 600) { util.showToast('请登录帐号') util.goLogin() } else { util.showToast(result.data.errmsg) } }, fail: function(e) { console.log('error in...') // reject调用后,即可传递到调用方使用catch或者async+await同步方式进行处理逻辑 reject(e) }, // // 完成之后关闭加载效果 // complete: () => { // ajaxTimes--; // if (ajaxTimes === 0) { // // 关闭正在等待的图标 // uni.hideLoading(); // } // } }) }) } }
需要在全局中配置 引入request.js文件
Vue.prototype.$request = request
在页面中使用
async request() { let res = await this.$request.get('/index/index', {'请求参数'}).then(result => { console.log(result) return result })
分类:
uniapp
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类