热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

uniapp的请求封装

https:www.cnblogs.comgqx-htmlp10967570.html1.环境配置(可参考uni-官网的环境配置)common文件夹下新建config.jsle

https://www.cnblogs.com/gqx-html/p/10967570.html

1.环境配置 (可参考uni-官网的环境配置)

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 == 验证码登录 */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()

          break

        default:

          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'
// POST请求方式
api.register = params => request.globalRequest(`${PORT1}/mobile/signUp`, 'POST//必须大写,为了兼容其他应用', params, 1)
// GET请求方式
api.register = params => request.globalRequest(`${PORT1}/mobile/signUp${formatGetUri(params)}`, 'GET //必须大写,为了兼容其他应用',{}, 1)

export default api

 

 

4. 新建common/util.js

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

/**

 * 拼接对象为请求字符串

 * 对于需要编码的文本(比如说中文)我们要进行编码

 * @param {Object} obj - 待拼接的对象

 * @returns {string} - 拼接成的请求字符串

 **/

export function formatGetUri(obj: Object) {

  const params: Array<string> &#61; []

  Object.keys(obj).forEach((key) &#61;> {

    let value &#61; obj[key]

    if (typeof value !&#61;&#61; &#39;undefined&#39; || value !&#61;&#61; null) {

      params.push([key, encodeURIComponent(value)].join(&#39;&#61;&#39;))

    }

  })

  return &#39;?&#39; &#43; params.join(&#39;&&#39;)

}

  

5.全局配置

在main.js中新增

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

 

 

5.接口调用

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

 


推荐阅读
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • TunesKit AceMovi视频编辑软件的背景音乐添加方法
    TunesKit AceMovi是一款功能强大的视频编辑软件,本文介绍了使用TunesKit AceMovi给视频添加背景音乐的具体操作方法,包括导入文件、选择音乐素材、拖拽到时间线、分割音频等步骤。通过添加适当的背景音乐,可以提升视频的感染力。详细的操作步骤在文章中有详细介绍,适合需要给视频添加背景音乐的用户使用。 ... [详细]
author-avatar
壹诺彡_壹生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有