详细教程 - 从零开发 Vue 鸿蒙harmonyOS应用 第五节 (基于uni-app封装鸿蒙接口请求库)

news/2024/7/19 15:01:16 标签: vue.js, harmonyos, uni-app, js

  随着鸿蒙系统的兴起,越来越多的app会采用鸿蒙开发。而鸿蒙开发必不可少的就是调用各种接口服务。为了简化接口的调用流程,我们通常会做一层封装。今天就来讲解一下,如何用uni-app封装鸿蒙的接口请求库。

一、新建项目

新建项目
  首先我们要新建一个鸿蒙项目啦!当然选择第一个空白项目就可以

二、目录结构

在这里插入图片描述

三、详细介绍

1. 创建request请求方法

  首先在js目录下创建一个ajax.js文件,这个文件用来封装网络请求:

// request.js

import config from './config.js';

export default function request(url, data = {}, method = 'GET') {

  return new Promise((resolve, reject) => {
    
    // 初始化请求任务
    var requestTask = uni.request({
      url: config.apiBaseUrl + url, 
      data: data,
      method: method,
      header: {
        Authorization: 'Bearer ' + getToken()  
      },
      success: (res) => {
        resolve(res.data);   
      },
      fail: (err) => {
        reject(err)  
      }
    });

    // 中断请求任务
    requestTask.abort = (cb) => {
      cb && cb();
      requestTask.abort();
    }

  });
}

  这里我们封装了一个request方法,调用时需要传入接口url、请求数据、请求方法这3个参数。

  同时实现了中断请求的功能,通过requestTask.abort可以中断这次请求。

2. 接口登录与token处理

  然后还需要实现token的自动刷新,我们在ajax.js文件中添加:

// token处理
export function getToken() {
  
  var token = uni.getStorageSync('token');
  
  if (!token) {
    return login().then(res => {
      token = res.token;   
      uni.setStorageSync('token', token);
      return token;
    });
  } 
  
  return token;
}

// 登录业务方法  
function login() {
  var data = {
    username: 'test',
    password: '123456'
  };
  
  // 实际应该调用登录接口
  return request('/login', data); 
}

  这样 before 请求发出时,会先自动处理token,如果没有则调用登录接口获取。

3. 接口管理

  我们通常会把接口按照业务分类,放到单独的接口管理文件中:

  在api目录下创建user.js文件:

// user.js 

import request from '../js/request.js';

export function getUserInfo(data) {
  
  return request('/user/info', data, 'POST');

}

export function getProductList(data) {

  return request('/products', data, 'GET');

}

  调用时只需要导入这个接口管理文件,就能非常方便地使用接口方法了:

// 页面中使用

import {getUserInfo} from '../api/api.js';

getUserInfo({id: 123}).then(res => {
  // TODO
});
  1. 配置管理
      最后我们通常还需要一个配置管理文件,在config.js中进行统一管理:
// config.js
const CONFIG = {
  apiBaseUrl: 'https://api.example.com',
  statusCode: {
    SUCCESS: 200,
    FORBIDDEN: 403,
    NOT_FOUND: 404  
  }  
}

export default CONFIG;

其他文件中导入CONFIG对象即可使用这些配置项。

  到此,我们就实现了请求方法、接口管理、配置管理的封装工具。这套简单的接口请求库也基本能满足中小型的uni-app项目需求。

如果你有任何疑问,欢迎在评论区交流!


http://www.niftyadmin.cn/n/5274167.html

相关文章

nginx稳定版1.20.1支持stream模块(保姆教程)

1.现状 目前centos 7.9版本默认安装版本是1.20.1,但不支持stram模块,我们想做mqtt转发,就实现不了。 2.备份原有的nginx mv /usr/sbin/nginx /usr/sbin/nginx.bak cp -r /etc/nginx /etc/nginx.bak 3.下载nginx wget http://nginx.org/d…

【贪心算法】之分饼干

文章目录 什么是贪心分饼干问题 什么是贪心 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,…

宝塔Linux:部署His医疗项目通过jar包的方式

📚📚 🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​​​ 🌟在这里,我要推荐给大家我的专栏《Linux》。🎯🎯 🚀无论你是编程小白,还是有…

【spring】自定义缓存注解

为什么要自定义缓存注解? Spring Cache本身提供Cacheable、CacheEvict、CachePut等缓存注解,为什么还要自定义缓存注解呢? Cacheabe不能设置缓存时间,导致生成的缓存始终在redis中,当然这一点可以通过修改RedisCacheM…

JavaSE学习笔记 Day18

JavaSE学习笔记 Day18 个人整理非商业用途,欢迎探讨与指正!! 上一篇 文章目录 JavaSE学习笔记 Day1816.2.2迭代器16.2.3泛型的基本使用 16.3常见的单列集合实现类16.3.1ArrayList16.3.2List集合的遍历16.3.3ArrayList的底层实现16.3.4Linked…

制作一个多行时正确宽度的Textview,Android Textview 换行时宽度过长 右侧空白区域挤掉页面元素的解决方案

优化 Android 布局:创建自适应宽度的 TextView 引言 在Android应用开发中,布局优化是提升应用性能和用户体验的关键环节之一。特别是对于那些内容密集型的应用,如何高效地展示和管理文本内容成为了一个挑战。最近,在处理一个布局…

格式化Echarts的X轴显示,设置显示间隔

业务需求:x轴间隔4个显示,并且末尾显示23时 x轴为写死的0时-23时,使用Array.from data: Array.from({ length: 24 }).map((_, i) > ${i}时) 需要在axisLabel 里使用 interval: 0, // 强制显示所有刻度标签,然后通过 formatter …

基于.NetCore开发评论系统(转)

博客前台以及后端涉及的代码主要在以下文件: StarBlog.Web/Services/CommentService.csStarBlog.Web/Apis/Comments/CommentController.csStarBlog.Web/Views/Blog/Widgets/Comment.cshtmlStarBlog.Web/wwwroot/js/comment.js 管理后台的代码在以下文件&#xff1…