uni-app 封装api请求

简介: uni-app 封装api请求

1,封装API请求步骤

uni-app中封装API请求可以按照以下步骤进行:

  1. 创建一个utils文件夹,并在其中创建一个api.js文件,用于存放API请求相关的代码。
  2. 在api.js文件中,引入uni.request方法用于发送请求。示例代码如下:
export function request(url, method, data) {
  return new Promise((resolve, reject) => {
    uni.request({
      url: url,
      method: method,
      data: data,
      success: (res) => {
        resolve(res.data);
      },
      fail: (err) => {
        reject(err);
      }
    });
  });
}

这里使用了Promise对象来处理异步请求,方便后续的使用和处理。

  1. 在api.js文件中,定义具体的API请求函数。示例代码如下:
import { request } from './utils/api';
export function login(username, password) {
  const url = 'https://api.example.com/login';
  const method = 'POST';
  const data = {
    username: username,
    password: password
  };
  return request(url, method, data);
}
export function getUserInfo(userId) {
  const url = `https://api.example.com/users/${userId}`;
  const method = 'GET';
  return request(url, method);
}

以上示例代码中包括了登录和获取用户信息两个API请求函数。根据具体的需求,你可以进行修改或添加其他的API请求函数。

  1. 在需要使用API的页面或组件中引入并调用定义的API请求函数即可。示例代码如下:
import { login, getUserInfo } from './utils/api';
login('example', 'password').then((res) => {
  console.log('登录成功', res);
}).catch((err) => {
  console.error('登录失败', err);
});
getUserInfo(123).then((res) => {
  console.log('获取用户信息成功', res);
}).catch((err) => {
  console.error('获取用户信息失败', err);
});
• 1

以上示例代码展示了如何使用封装的API请求函数来进行登录和获取用户信息的操作。根据具体需求,你可以在相应的页面或组件中调用相关API请求函数。

通过以上步骤,你就可以在uni-app中封装API请求,使代码结构更加清晰和可维护。记得根据实际情况进行适当的错误处理和数据处理。

2,uni-app封装api请求改进

// @/utils/request.js
// #ifdef MP-WEIXIN
const baseURL = "https://www.bradenhan.tech"
// #endif 
// #ifdef H5
const baseURL = ""
// #endif
const timeout = 5000
// 封装api请求
const request = function(option){ 
    // 获取用户传入的url
    var url = baseURL + option.url; 
     
    // 添加提请求头
    var  header = option.header||{}
    if(!!option.needToken){
        // 添加token 
        header.Authorization =  'Bearer ' +  uni.getStorageSync('token');  
    }
    header.source=1;
    header.channel="h5";
    
    // 加载提示
    var loading = option.loading;
    // 如果有loading就显示loading
    if(loading){
        uni.showLoading(loading)
    }
  
  // 返回一个promise
    return new Promise((resolve,reject)=>{  
        // 发起一个request请求
        uni.request({
            url, //请求url
            method:option.method||"GET", //请求方法
            header, //请求头
            timeout,
            data:option.data||option.params, //请求数据
            success(res){
                // 成功返回结果
                if(res.statusCode===200){
                    resolve(res.data)
                    // 如果是101 没有权限
                    if(res.data.code==101){
                        uni.showToast({
                            title: res.data.msg,
                            icon:'none'
                        })
                        uni.redirectTo({
                            url: '/pages/login/index',
                        })
                    }
                    if(res.data.code!=200&&res.data.code!=0){
                        uni.showToast({
                            icon:'none',
                            title:res.data.msg||'请求错误'
                        })
                    }
                } 
            },
            fail(err){
                // 失败返回失败结果
                uni.showToast({
                    title: '请求失败',
                    icon:'error'
                })
                console.error(err);
                reject(err)
            },
            complete(){
                // 完成 关闭loading
                if(loading){
                    uni.hideLoading()
                }
            }
        })
    })
}
// 定义get简洁方法
request.get=function(url,config){
    return  request({
        url,
        method:"GET",
        ...config
    })
}
// 定义post简洁方法
request.post=function(url,data,config){
    return  request({
        url,
        method:"POST",  
        ...config,
        data
    })
}
// 导出请求
export default request;

统一控制api.js

request.post(url,data,needToken)

参数:

• url 请求url

• data 请求参数data

• needToken 是否需要参数

// @/api/index.js
import request from '@/utils/request.js' 
// 用户注册
export function customUseRegister(data){
    return request.post("/xxxx1",data)
}
// 微信用户登录
export function customUserLogin(data){
    return request.post("/xxxx2",data)
} 
// 更新用户信息 -- 需要使用Token
export function customUserUpdate(data){
    return request.post("/xxxx3",data,{needToken: true})
}

组件中使用

import { customUserLogin, customUseRegister,customUserUpdate } from '@/api/index.js'
customUserUpdate(data).then((res) => {
  console.log('成功', res);  
}).catch((err) => { 
  console.error('登录失败', err);
});
目录
打赏
0
0
0
0
39
分享
相关文章
|
10天前
|
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
74 15
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
仿第八区APP分发下载打包封装系统源码
该系统为仿第八区APP分发下载打包封装系统源码,支持安卓、iOS及EXE程序分发,自动判断并稳定安装。智能提取应用信息,自动生成PLIST文件和图标,提供合理的点数扣除机制。支持企业签名在线提交、专属下载页面生成、云端存储(阿里云、七牛云),并优化签名流程,支持中文包及合并分发,确保高效稳定的下载体验。 [点击查看源码](https://download.csdn.net/download/huayula/90463452)
112 22
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
76 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
1688APP 原数据 API 接口的开发、应用与收益
1688作为阿里巴巴旗下的B2B平台,汇聚海量供应商和商品资源。其APP原数据API接口为开发者提供获取商品详细信息的强大工具,涵盖商品标题、价格、图片等。通过注册开放平台账号、申请API权限并调用接口,开发者可构建比价工具、供应链管理及自动化上架工具等应用,提升用户体验与运营效率,创造新的商业模式。示例代码展示了如何使用Python调用API并解析返回结果。
151 8
1688app 商品详情接口系列(1688API)
1688作为国内知名批发采购平台,提供了一系列商品详情接口(API),助力企业和开发者获取商品基础、价格、库存及供应商信息。通过Python示例代码展示如何调用这些接口,应用场景涵盖采购决策辅助、数据分析与市场调研、电商平台整合及供应链管理系统的优化,为企业和采购商提供有力的数据支持,提升业务效率和竞争力。
129 15
京东app商品详情API接口系列(京东 API)
本文介绍了使用 Python 调用京东商品详情 API 的方法。前期需安装 `requests` 库处理 HTTP 请求,导入 `json` 库解析 JSON 数据。接口通过商品 ID 获取详细信息,如价格、图片、评价等。示例代码展示了如何构建请求并处理响应数据。应用场景包括电商开发、市场调研和数据分析等,帮助提升用户体验、优化推荐系统及制定市场策略。
淘宝APP分类API接口:开发、运用与收益全解析
淘宝APP作为国内领先的购物平台,拥有丰富的商品资源和庞大的用户群体。分类API接口是实现商品分类管理、查询及个性化推荐的关键工具。通过开发和使用该接口,商家可以构建分类树、进行商品查询与搜索、提供个性化推荐,从而提高销售额、增加商品曝光、提升用户体验并降低运营成本。此外,它还能帮助拓展业务范围,满足用户的多样化需求,推动电商业务的发展和创新。
99 5
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
312 6

热门文章

最新文章