uni-app(二)接口请求封装,全局输出api

简介: uni-app 开发
  • 在项目 main.js 同级创建 utils 文件夹,

  • utils里创建 config.js文件,存储重要参数

//  获取平台信息
const {
  system,
} = uni.getSystemInfoSync()


// 请求服务器环境,xxx 在这里是填充,请自行替换
let baseUrl = ['http://xxx', 'https://xxx']

//  小程序重要参数
uni.config = {
  platform: system.startsWith("iOS") ? 2 : 1, // IOS为2 安卓为1
  imgUrl: "https://xxx", // 图片地址前缀
  baseUrl: baseUrl[1],
  appid: "xxx", // appid
}
  • utils里创建request.js文件,封装接口请求

// 登录接口域名
const LOGIN_URL = '/xx/xx'
const {
  baseUrl,
  appid
} = uni.config

// 封装接口请求
uni.http = (args = {}) => {
  let url = args.url || ''
  let data = args.data || {}
  data.appid = appid
    let method = args.method || 'GET'
    return new Promise((resolve, reject) => {
        request(url, data, method, resolve, reject)
    }) 
}

// 接口封装
const request = async (url, data = {}, method, resolve, reject) => {
    let token = await getToken()
    let header = {
      'content-type': 'application/x-www-form-urlencoded',
      'token': token
    }
  uni.request({
    header,
    url: baseUrl + url,
    method,
    data,
    dataType: 'json',
    success: res => {
      if (res.statusCode == 200) {
        let code = res.data.return
        if (code == 0) {
          resolve(res.data)
        } else {
          uni.showModal({
            title: '错误码:' + code,
            content: res.data.result
          })
        }
      }
    },
    fail: err => {
      reject(err)
    }
  })
}

// 获取Token
const getToken = async () => {
  let token = uni.getStorageSync('token')
  if (token) {
    return token
  } else {
    let tokenRes = await login()
    return tokenRes.data.token
  }
}

// 封装登录
const login = () => {
  return new Promise((resolve, reject) => {
    uni.getProvider({
      service: "oauth",
      success(providerRes) {
        let provider = providerRes.provider[0]
        uni.login({
          provider,
          success: (codeRes) => {
            uni.request({
              url: baseUrl + LOGIN_URL,
              method: 'POST',
              header: {
                'content-type': 'application/x-www-form-urlencoded',
                appid
              },
              data: {
                code: codeRes.code
              },
              dataType: 'json',
              success: (res) => {
                if (res && res.statusCode == 200) {
                  // 存储用户信息
                  uni.setStorageSync('status', res.data.data)
                  // 存储用户token
                  uni.setStorageSync('token', res.data.token)
                  resolve(res.data)
                } else {
                  reject(res)
                }
              },
              fail: (err) => {
                reject(err)
              }
            })
          },
          fail: (err) => {
            reject(err)
          }
        })
      }
    })
  })
}
  • utils里创建 api.js文件,整理页面需要的请求,输出api
// 这里举个例子,实际结合自己使用场景
// 获取列表
let getList = function(data) {
    return await uni.http({
        url: "/xxx/xxx",
        data,
        method: "POST"
    })
}

// 全局输出
uni.service = {
    getList
}
  • main.js 引入文件
// 顺序引入,负责参数会访问不到

import '@/utils/config'
import '@/utils/request'
import '@/utils/api'
  • 使用
methods: {
  async getList() {
   let obj = {
      // 参数
    }
    let res = await uni.service.getList(obj)
    if (res.return == 0) {
      // 成功操作
    }
  }
}

好了,你学废了吗,下期整理 uni-app 的其他内容,期待你的到来。

相关文章
|
12月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
12月前
|
人工智能 自然语言处理 测试技术
Apipost智能搜索:只需用业务语言描述需求,就能精准定位目标接口,API 搜索的下一代形态!
在大型项目中,API 数量庞大、命名不一,导致“找接口”耗时费力。传统工具依赖关键词搜索,难以应对语义模糊或命名不规范的场景。Apipost AI 智能搜索功能,支持自然语言查询,如“和用户登录有关的接口”,系统可理解语义并精准匹配目标接口。无论是新人上手、模糊查找还是批量定位,都能大幅提升检索效率,降低协作成本。从关键词到语义理解,智能搜索让开发者少花时间找接口,多专注核心开发,真正实现高效协作。
|
存储 缓存 算法
亚马逊 SP-API 深度开发:关键字搜索接口的购物意图挖掘与合规竞品分析
本文深度解析亚马逊SP-API关键字搜索接口的合规调用与商业应用,涵盖意图识别、竞品分析、性能优化全链路。通过COSMO算法解析用户购物意图,结合合规技术方案提升关键词转化率,助力卖家实现数据驱动决策,安全高效优化运营。
|
Web App开发 Windows
使用Charles工具拦截app请求
1、电脑客户端下载,点击下载 我下面按照windows客户端演示,mac的客户端大相径庭 2、开启proxy(代理),并设置端口,默认8888 点击菜单 Proxy >> Proxy Setting >> 3、电脑端安装CA证书 ...
2462 0
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
1783 139
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
815 137
|
移动开发 小程序 Android开发
基于 uni-app 开发的废品回收类多端应用功能与界面说明
本文将对一款基于 uni-app 开发的废品回收类多端应用,从多端支持范围、核心功能模块及部分界面展示进行客观说明,相关资源信息也将一并呈现。
390 0

热门文章

最新文章