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);
});
目录
相关文章
|
21天前
|
缓存 监控 API
抖音抖店 API 请求获取宝贝详情数据的调用频率限制如何调整?
抖音抖店API请求获取宝贝详情数据的调用频率受限,需遵循平台规则。开发者可通过提升账号等级、申请更高配额、优化业务逻辑(如缓存数据、异步处理、批量请求)及监控调整等方式来应对。
|
23天前
|
缓存 负载均衡 API
抖音抖店API请求获取宝贝详情数据、原价、销量、主图等参数可支持高并发调用接入演示
这是一个使用Python编写的示例代码,用于从抖音抖店API获取商品详情,包括原价、销量和主图等信息。示例展示了如何构建请求、处理响应及提取所需数据。针对高并发场景,建议采用缓存、限流、负载均衡、异步处理及代码优化等策略,以提升性能和稳定性。
|
3天前
|
JSON API 数据格式
携程API接口系列,酒店景点详情请求示例参考
携程API接口系列涵盖了酒店预订、机票预订、旅游度假产品预订、景点门票预订等多个领域,其中酒店和景点详情请求是较为常用的功能。以下提供酒店和景点详情请求的示例参考
|
1月前
|
JavaScript 前端开发 Java
多种语言请求API接口方法
每种语言和库的选择取决于具体需求、项目环境以及个人偏好。了解这些基本方法,开发者就可以根据项目需求选择合适的语言和库来高效地与API交互。
37 1
|
1月前
|
存储 数据可视化 JavaScript
可视化集成API接口请求+变量绑定+源码输出
可视化集成API接口请求+变量绑定+源码输出
43 4
|
4天前
|
JSON API 数据格式
淘宝 / 天猫官方商品 / 订单订单 API 接口丨商品上传接口对接步骤
要对接淘宝/天猫官方商品或订单API,需先注册淘宝开放平台账号,创建应用获取App Key和App Secret。之后,详细阅读API文档,了解接口功能及权限要求,编写认证、构建请求、发送请求和处理响应的代码。最后,在沙箱环境中测试与调试,确保API调用的正确性和稳定性。
|
16天前
|
供应链 数据挖掘 API
电商API接口介绍——sku接口概述
商品SKU(Stock Keeping Unit)接口是电商API接口中的一种,专门用于获取商品的SKU信息。SKU是库存量单位,用于区分同一商品的不同规格、颜色、尺寸等属性。通过商品SKU接口,开发者可以获取商品的SKU列表、SKU属性、库存数量等详细信息。
|
17天前
|
JSON API 数据格式
店铺所有商品列表接口json数据格式示例(API接口)
当然,以下是一个示例的JSON数据格式,用于表示一个店铺所有商品列表的API接口响应
|
27天前
|
编解码 监控 API
直播源怎么调用api接口
调用直播源的API接口涉及开通服务、添加域名、获取API密钥、调用API接口、生成推流和拉流地址、配置直播源、开始直播、监控管理及停止直播等步骤。不同云服务平台的具体操作略有差异,但整体流程简单易懂。
|
7天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释