当前位置: 首页 > wzjs >正文

招远网站网站建设linux

招远网站,网站建设linux,搜索引擎营销是目前最主要的网站推广营销,网站建设答案本文基于微信小程序原生 API,封装 request 和 uploadFile 接口,最终实现统一请求管理、请求拦截、错误处理等能力。 📦 一、为什么要封装网络请求? 微信小程序提供了 wx.request 和 wx.uploadFile 原生 API,但直接使用…

本文基于微信小程序原生 API,封装 requestuploadFile 接口,最终实现统一请求管理、请求拦截、错误处理等能力。


📦 一、为什么要封装网络请求?

微信小程序提供了 wx.requestwx.uploadFile 原生 API,但直接使用存在以下问题:

  • 重复代码多:每次都要写 header、拼接 URL、处理 loading、异常等;
  • 缺少统一错误处理:每个请求都得自己 try-catch;
  • 不好管理 token 等公共逻辑:无法统一加请求头;
  • 调试困难:没有统一日志输出或接口追踪;

封装后,我们可以统一管理所有接口请求,提升开发效率与代码可维护性。


🏗️ 二、项目结构建议

/utils├── request.ts        # 通用网络请求封装├── upload.ts         # 上传封装└── config.ts         # 环境配置

⚙️ 三、基础配置 config.ts

// utils/config.tsexport const BASE_URL = 'https://api.example.com';export const DEFAULT_HEADER = {'Content-Type': 'application/json',
};export function getToken(): string {// 假设从本地获取缓存 tokenreturn wx.getStorageSync('token') || '';
}

🌐 四、封装通用 request 请求 request.ts

// utils/request.tsimport { BASE_URL, DEFAULT_HEADER, getToken } from './config';interface RequestOptions<T> {url: string;method?: 'GET' | 'POST' | 'PUT' | 'DELETE';data?: any;header?: Record<string, string>;showLoading?: boolean;timeout?: number;
}export function request<T = any>(options: RequestOptions<T>): Promise<T> {const {url,method = 'GET',data = {},header = {},showLoading = true,timeout = 10000,} = options;return new Promise((resolve, reject) => {if (showLoading) {wx.showLoading({ title: '加载中...', mask: true });}wx.request({url: BASE_URL + url,method,data,header: {...DEFAULT_HEADER,...header,Authorization: `Bearer ${getToken()}`, // 添加 token},timeout,success(res) {if (res.statusCode === 200) {resolve(res.data);} else {wx.showToast({ title: `错误 ${res.statusCode}`, icon: 'none' });reject(res);}},fail(err) {wx.showToast({ title: '网络异常', icon: 'none' });reject(err);},complete() {if (showLoading) {wx.hideLoading();}},});});
}

🖼️ 五、上传封装 upload.ts

// utils/upload.tsimport { BASE_URL, getToken } from './config';export interface UploadFileOptions {url: string;filePath: string;name?: string;formData?: Record<string, string>;showLoading?: boolean;
}export function uploadFile(options: UploadFileOptions): Promise<any> {const {url,filePath,name = 'file',formData = {},showLoading = true,} = options;return new Promise((resolve, reject) => {if (showLoading) {wx.showLoading({ title: '上传中...', mask: true });}wx.uploadFile({url: BASE_URL + url,filePath,name,formData,header: {Authorization: `Bearer ${getToken()}`,},success(res) {if (res.statusCode === 200) {try {resolve(JSON.parse(res.data)); // 注意返回是字符串} catch (e) {reject(e);}} else {wx.showToast({ title: '上传失败', icon: 'none' });reject(res);}},fail(err) {wx.showToast({ title: '上传异常', icon: 'none' });reject(err);},complete() {if (showLoading) {wx.hideLoading();}},});});
}

✅ 六、实际使用案例

示例:获取用户信息

// pages/user/index.tsimport { request } from '../../utils/request';Page({onLoad() {request({url: '/user/info',method: 'GET',}).then((res) => {console.log('用户信息', res);}).catch(console.error);},
});

示例:上传头像

// pages/upload/index.tsimport { uploadFile } from '../../utils/upload';Page({uploadAvatar() {wx.chooseImage({count: 1,success: (res) => {const filePath = res.tempFilePaths[0];uploadFile({url: '/upload/avatar',filePath,}).then((res) => {console.log('上传成功', res);}).catch(console.error);},});},
});

📚 七、总结

通过本教程,我们实现了小程序中通用的 requestuploadFile 的封装,具备了:

  • ✅ 支持 token 自动注入
  • ✅ 支持 loading 提示与关闭
  • ✅ 支持统一错误提示
  • ✅ 支持上传功能
  • ✅ 接口调用代码更清晰简洁
http://www.dtcms.com/wzjs/836001.html

相关文章:

  • 网站ui设计规范网站建设方案书安全性
  • 汽车行业网站建设比较好低价网站建设费用多少
  • 国内做外贸网站的有哪些资料公司让我做网站负责人
  • 企业网站建设中存在的问题分析飞沐网站建设公司北京
  • 山东公司网站推广优化自适应网站建设哪家便宜
  • 广西南宁建设厅网站项目之家app
  • 怎么把百度放到网站上营销策划机构
  • 联雅网站建设网站 建设 拖拉 源码 系统
  • 郑州网站建设的软件网页访问被拒绝怎么办
  • 重庆建设网站哪里好西安给大学做网站公司
  • 如何自己做的网站网站 建设原则
  • 宝安网站建设网站对位
  • 衡水网站建设03181688wordpress 不登陆后台 数据库恢复
  • 企业网站实名制天津重型网站建设推荐
  • 珠宝类网站模板社保官方网站登录入口
  • 能源网站模板网站设计是用什么做的
  • 建立网站项目计划书模板十年经验网站开发企业
  • 网站建设基本流程及相应的技术有做酒席酒水网站吗
  • 广州工程建设网站找人代做网站需要注意什么
  • 网站建设的步骤图片过程西安百度seo代理
  • 自己编程怎么做网站教程北沙滩网站建设
  • 网站建设需要的框架结构群晖wordpress内外网访问
  • 大网站是用什么做html5的开发公司地下停车位买卖协议书范本
  • 国外 上海网站建设免费的简历制作网站
  • 企业网站优化服务主要围绕什么临沂网站建设方案报价
  • 容桂品牌网站建设优惠建设视频网站链接百度云盘
  • 耳机 东莞网站建设超八成搜索网站存在信息泄露问题
  • 网站怎么做更新我先做个网站怎么做的
  • 减肥网站源码网页制作软件是哪个
  • wordpress仿站开发wordpress多语言子域名