当前位置:首页 > uni-app

uniapp与后台交互

2026-02-06 10:56:00uni-app

uniapp与后台交互的方式

uniapp提供了多种与后台服务器交互的方法,主要包括以下几种:

使用uni.request进行HTTP请求

uni.request是uniapp中最常用的与后台交互的方式,基于微信小程序的request API封装,支持GET、POST等HTTP方法。基本用法如下:

uni.request({
  url: 'https://example.com/api',
  method: 'GET',
  data: {
    key1: 'value1',
    key2: 'value2'
  },
  success: (res) => {
    console.log(res.data);
  },
  fail: (err) => {
    console.error(err);
  }
});

使用WebSocket进行实时通信

对于需要实时双向通信的场景,可以使用uni.connectSocket创建WebSocket连接:

const socket = uni.connectSocket({
  url: 'wss://example.com/ws',
  success: () => {
    console.log('连接成功');
  }
});

socket.onMessage((res) => {
  console.log('收到消息', res.data);
});

使用uni.uploadFile上传文件

文件上传需要使用专门的uni.uploadFile方法:

uni.chooseImage({
  success: (chooseRes) => {
    const tempFilePaths = chooseRes.tempFilePaths;
    uni.uploadFile({
      url: 'https://example.com/upload',
      filePath: tempFilePaths[0],
      name: 'file',
      formData: {
        'user': 'test'
      },
      success: (uploadRes) => {
        console.log(uploadRes.data);
      }
    });
  }
});

使用uni.downloadFile下载文件

文件下载功能可以通过uni.downloadFile实现:

uni.downloadFile({
  url: 'https://example.com/file.pdf',
  success: (res) => {
    if (res.statusCode === 200) {
      const filePath = res.tempFilePath;
      uni.saveFile({
        tempFilePath: filePath,
        success: (savedRes) => {
          console.log('文件保存成功', savedRes.savedFilePath);
        }
      });
    }
  }
});

请求封装与全局配置

在实际项目中,通常会封装请求函数以便统一管理:

// api.js
const baseURL = 'https://example.com/api';

function request(options) {
  return new Promise((resolve, reject) => {
    uni.request({
      url: baseURL + options.url,
      method: options.method || 'GET',
      data: options.data || {},
      header: {
        'Content-Type': 'application/json',
        'Authorization': uni.getStorageSync('token')
      },
      success: (res) => {
        if (res.statusCode === 200) {
          resolve(res.data);
        } else {
          reject(res.data);
        }
      },
      fail: (err) => {
        reject(err);
      }
    });
  });
}

export const getData = (params) => request({ url: '/data', method: 'GET', data: params });
export const postData = (data) => request({ url: '/data', method: 'POST', data });

跨域问题处理

在开发环境中可能会遇到跨域问题,可以通过以下方式解决:

  1. 配置H5端的devServer代理(vue.config.js):

    module.exports = {
    devServer: {
     proxy: {
       '/api': {
         target: 'https://example.com',
         changeOrigin: true,
         pathRewrite: {
           '^/api': ''
         }
       }
     }
    }
    };
  2. 生产环境通过后端配置CORS或使用Nginx反向代理解决跨域问题。

数据缓存策略

为了提高用户体验,可以考虑使用本地缓存:

// 优先从缓存获取数据,不存在则请求接口
function getCachedData(key) {
  return new Promise((resolve) => {
    uni.getStorage({
      key,
      success: (res) => {
        resolve(res.data);
      },
      fail: () => {
        request({ url: '/data/' + key }).then(data => {
          uni.setStorage({ key, data });
          resolve(data);
        });
      }
    });
  });
}

错误处理与拦截

可以封装统一的错误处理逻辑:

// 请求拦截
uni.addInterceptor('request', {
  invoke(args) {
    // 请求前添加loading
    uni.showLoading({ title: '加载中' });
  },
  success(args) {
    // 请求成功隐藏loading
    uni.hideLoading();
  },
  fail(err) {
    // 请求失败处理
    uni.hideLoading();
    uni.showToast({ title: '请求失败', icon: 'none' });
  }
});

注意事项

  1. 小程序平台对请求域名有白名单限制,需要在manifest.json中配置request合法域名
  2. 注意不同平台的兼容性问题,特别是H5和小程序的差异
  3. 对于敏感数据,建议使用HTTPS协议传输
  4. 合理设置请求超时时间,避免长时间等待
  5. 考虑网络状态检测,可以在发起请求前检查网络连接状态

uniapp与后台交互

标签: 后台uniapp
分享给朋友:

相关文章

vue实现后台分页

vue实现后台分页

实现后台分页的方法 在Vue中实现后台分页通常需要结合前端和后端逻辑,后端负责处理数据分页,前端负责展示分页数据和交互。以下是具体实现方法: 后端API设计 后端需要提供支持分页的API接口,通常包…

uniapp消息推送

uniapp消息推送

uniapp消息推送实现方法 uniapp支持多种消息推送方式,包括uniPush、个推、极光推送等。以下为常见实现方案: uniPush(官方推荐) uniapp官方提供的推送服务,基于DClo…

uniapp应用市场

uniapp应用市场

uniapp应用市场概述 Uniapp作为跨平台开发框架,支持将代码编译到iOS、Android、Web及各类小程序平台。其应用市场(插件市场)是开发者获取扩展插件、模板、组件的重要资源库,涵盖UI组…

uniapp怎么启动

uniapp怎么启动

启动UniApp项目的步骤 确保已安装Node.js(建议版本12+)和HBuilderX(官方IDE)。若未安装,需先下载并配置环境。 安装开发工具 从HBuilderX官网下载对应操作系统的版本…

uniapp树形选择

uniapp树形选择

uniapp树形选择实现方法 使用uni-data-checkbox组件 uniapp内置的uni-data-checkbox组件支持树形结构选择,适用于多级分类场景。配置时需要将数据格式化为树形结构…

uniapp安装axios

uniapp安装axios

安装axios 在uniapp项目中安装axios需要确保项目支持node_modules管理。通过npm或yarn安装axios: npm install axios # 或 yarn add a…