uniapp封装方法

参考:https://www.cnblogs.com/gqx-html/p/10967570.html
根据报错和实际情况作了一些修改
1.环境配置
common文件夹下新建config.js

let url_config = ""if(process.env.NODE_ENV === 'development'){// 开发环境url_config = 'https://*****.com/'  //开发环境就是运行时的环境接口
}else{// 生产环境url_config = 'https://*****.com/' //生产环境就是发布时的环境接口
}export default url_config

2.uni.request封装
common文件夹下新建request.js

import urlConfig from './config.js'const request = {}
const headers = {}
const PORT1 = '/baseinfo'request.globalRequest = (url, method, data, power) => {
/*     权限判断 因为有的接口请求头可能需要添加的参数不一样,所以这里做了区分1 == 不通过access_token校验的接口2 == 文件下载接口列表3 == 验证码登录 *///当项目没有vuex时是正确的,当我在项目中配置vuex后,就报错找不到state,才发现是源码这里报错。如果你也报这个错,把下面这个switch 注释掉就可以了switch (power){case 1:headers['Authorization'] = 'Basic a3N1ZGk6a3N1ZGk='break;case 2:headers['Authorization'] = 'Basic a3N1ZGlfcGM6a3N1ZGlfcGM='break;case 3:responseType = 'blob'break;default:headers['Authorization'] = `Bearer ${this.$store.getters.userInfo}`headers['TENANT-ID'] = this.$store.getters.userInfo.tenant_idbreak;}return uni.request({url: urlConfig + url,method,data: data,dataType: 'json',header: headers}).then(res => {if (res[1].data.status && res[1].data.code == 200) {return res[1]} else {throw res[1].data}}).catch(parmas => {switch (parmas.code) {case 401:uni.clearStorageSync()breakdefault:uni.showToast({title: parmas.message,icon: 'none'})return Promise.reject()break}})} export default request

3.接口配置
项目根目录下新建api文件,api下新建index.js

import request from '@/common/request.js'
import { formatGetUri } from '@/common/util.js'const api = {}
const PORT1 = 'baseinfo'
// 请求方式
//用户登录获得code
api.login = params => request.globalRequest(`/getCode`, 'GET', params);//GET,POST必须大写
export default api

4. 新建common/util.js

/*** 拼接对象为请求字符串* 对于需要编码的文本(比如说中文)我们要进行编码* @param {Object} obj - 待拼接的对象* @returns {string} - 拼接成的请求字符串**/
export function formatGetUri(obj) {const params = []Object.keys(obj).forEach((key) => {let value = obj[key]if (typeof value !== 'undefined' || value !== null) {params.push([key, encodeURIComponent(value)].join('='))}})return '?' + params.join('&')
}

5.在main.js中新增

import Vue from 'vue'
import App from './App'
import store from './store'  // 与vue项目中配置相同,可自行配置import request from './common/request.js'
import api from './api/index.js'
import url from './common/config.js'Vue.config.productionTip = false
Vue.prototype.$request = request
Vue.prototype.$api = api
Vue.prototype.$url = urlApp.mpType = 'app'const app = new Vue({...App,store
})app.$mount()

6.接口调用

this.$api.register({mobile: this.mobile}).then(res => {// 获得数据 console.log(res)
}).catch(res => {// 失败进行的操作
})

7.注意: 这里参考别人的文章,我复制之后,遇到文件根据实际情况做了一些修改,当项目没有vuex时是正确的,当我在项目中配置vuex后,就报错找不到state,才发现是源码这里报错。如果你也报这个错,把request.js中的switch 注释掉就可以了

uniapp封装方法相关推荐

  1. uni-app封装缓存过期方法

    uni-app封装缓存过期方法 缓存在我们的日常开发中还是非常常见的.同样的今天的话题是在uni-app框架中怎么封装一个缓存方法,为什么还要自己封装缓存方法?虽然说uni-app是用缓存的api接口 ...

  2. 浅析 uniapp(Vue) 的接口封装方法

    浅析 uniapp(Vue) 的接口封装方法 本文将详细讲解封装思路,通过对接口请求进行封装,实现接口引入即用,减少了请求复杂的属性参数,更加关注数据与业务本身. config - 请求地址及相关参数 ...

  3. Android uni-app 封装原生插件

    前言 据广大用户的需求,需要把我们anyRTC的SDK,封装到uni-app来使用,并且实现音视频通话.这边文章图文讲解一下怎么封装原生插件,并且在下一章uni-app实现音视频通话. anyRTC开 ...

  4. uniapp02 封装方法,页面跳转,页面的生命周期,@click,@input,v-model、封装组件、tabbar

    一,封装方法 默认导出 export default   1. 如果是默认导出 只能使用一次  export default  2. 如果你想导出多个 可以使用 按需导出   export     3 ...

  5. js面向对象的封装方法,【案例】

    封装方法: /*** @矩形canvas库* @authors Shimily (275766400@qq.com)* @date 2016-12-28 10:30:51* @version $Id$ ...

  6. python封装方法有几种_python之--------封装

    一.封装: 补充封装: 封装: 体现在两点:1.数据的封装(将数据封装到对象中) obj= Foo('宝宝',22)2.封装方法和属性,将一类操作封装到一个类中classFoo:def __init_ ...

  7. MP实战系列(十一)之封装方法详解(续一)

    之前写的封装方法详解,比较简要. 今天我主要讲增加和删除及其修改.查的话得单独再详讲. 增删改查,无论是Java或者C#等等,凡是对数据库操作的都离不开这四个. 一.增加方法讲解 MyBatis Pl ...

  8. 多层陶瓷电容器用处_【科普】片状多层陶瓷电容器的封装方法,你了解吗?

    随着以片状多层陶瓷电容器为首的电子元器件的快速小型化发展,尺寸也进行了如下变化: size (EIA) 3216(1206)→2012(0805)→1608(0603)→1005(0402)→0603 ...

  9. js 数组移除_JS某些封装方法

    js中的一些封装方法 1.首先var一个数组 然后创建一个函数,在函数里var一个新的空数组,利用for循环,在for循环里var一个下标 i=形参的长度-1 设置i>=0 i--. 在for循 ...

最新文章

  1. Redfield.Sketch.Master中文版
  2. Redis学习笔记(八)——持久化
  3. 高效运维最佳实践:如何做好On-call和事故响应?
  4. 30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
  5. C编程实践:简单的通讯录
  6. java rotate怎么用_jQuery旋转插件jqueryrotate用法详解
  7. 考教育统计与测量可以带哪种计算机,《教育统计与测量》练习题库及答案
  8. 计算机设备 运维,计算机网络设备运维报告
  9. 小奇遐想 树状数组实现+容斥思想
  10. python数据抓取课程_Python爬虫入门教程 22-100 CSDN学院课程数据抓取
  11. redhat6.3下配置使用cenos yum源
  12. 精通javascript、javascript语言精粹读书笔记
  13. python 3.5 format_python 3.5学习笔记(第四章)
  14. 前端Unicode字符图标汇总
  15. DAMA-DMBOK 数据治理功能框架
  16. 三分钟了解域名怎么备案?
  17. 大小写字母格式(26个大小写字母格式表)
  18. 客服对于Kindle电子书的退货、倒闭、VR等问题的回答
  19. tiny4412 裸机程序 八、重定位到DRAM及LCD实验
  20. 嵌入式核心板研发之路_启动迅为4412核心板_稳定运行_超强扩展能力

热门文章

  1. Ubuntu网络环境配置
  2. bde怎么配置oracle数据库,Oracle数据访问组件ODAC教程:如何从BDE和DOA迁移
  3. python根据关键字爬取微博_Python 超简单爬取微博热搜榜数据
  4. MDaemon功能篇之优先级邮件
  5. Spring boot 获取本机的IP地址mac地址以及电脑名称!
  6. 可以添加Google adsense广告和阿里妈妈的博客汇总
  7. HDu--我要拿走你的蜡烛
  8. Android系统文件夹结构介绍
  9. 云原生IDE:iVX首个通用且强大无代码开发平台
  10. 查询同名同性学生名单,并统计同名人数