• 一、前言
  • 二、创建http.js
  • 三、需要使用的页面中,导入和使用 http

一、前言

在使用 uni-app 开发前端的过程中,uni-app 官方已为我们提供了非常丰富的组件和 API,比如 uni.request 网络请求,如果我们直接在代码中使用会造成较多的冗余,因此一般都会进行封装。之前有介绍过 uni.request 的基础封装,今天介绍另一种封装方式:基于 promise 的封装方式。

二、创建http.js

  • 在项目根路径下新建 commons 文件夹,并创建一个 http.js,内容如下:
const baseUrl = 'http://127.0.0.1:8080/api/'const showToast = (title) => {uni.showToast({title: title,icon: 'none'})
}/**请求接口* @method http* @param {String} url 接口地址* @param {Object} data 接口参数* @param {Object} option 接口配置信息,可选* @return {Object} Promise*/
const http = (url, data = {}, option = {}) => {let hideLoading = option.hideLoading || false // 是否显示 loadinglet hideMsg = option.hideMsg || false // 是否隐藏错误提示let token = '' // 登录鉴权获得的 tokenuni.getStorage({key: 'token',success: (ress) => {token = ress.data}})if (!hideLoading) {uni.showLoading({title: '加载中...',mask: true})}return new Promise((resolve, reject) => {uni.request({url: baseUrl + url,method: option.method || 'POST', // 默认 post 请求header: {'Token': token},data: data,success: res => { // 服务器成功返回的回调函数if (!hideLoading) uni.hideLoading()if (res.statusCode === 200) {let result = res.dataif (result.errcode === '0') {resolve(result)return}reject(result.errmsg)if (!hideMsg) showToast(result.errmsg)} else { // 返回值非 200,强制显示提示信息showToast('[' + res.statusCode + '] 系统处理失败')reject('[' + res.statusCode + '] 系统处理失败')}},fail: (err) => { // 接口调用失败的回调函数if (!hideLoading) uni.hideLoading()if (err.errMsg != 'request:fail abort') {showToast('连接超时,请检查您的网络。')reject('连接超时,请检查您的网络。')}}})})
}
export default http

三、需要使用的页面中,导入和使用 http

<script>import http from '@/commons/http.js'export default {data() {return {}},onLoad() {},methods: {loadData (id) {http('data/get', {id: id}, {hideLoading: false, // 默认 falsehideMsg: true, // 默认 falsemethod: 'POST' // 默认 POST}).then(res => {console.log(res.data)}).catch(err => {console.error(err)})}}}
</script>

uni-app 基于 Promise 的 request 请求封装相关推荐

  1. PHP Request请求封装

    /*** Request请求封装* Class Request* @package tool*/ class Request {// curl 请求错误码protected static $list_ ...

  2. 微信小程序服务器开小差了,微信小程序wx.request请求封装

    微信小程序 wx.request RequestTask wx.request(Object object)发起 HTTPS 网络请求. 示例代码 wx.request({ url: 'test.ph ...

  3. 微信小程序request请求封装;微信小程序封装request请求;uni-app小程序封装request请求;

    本片封装了微信小程序request请求:为别是post get put请求,重点在request.js文件 1.新增四个文件 2.根目录下的utils下的request.js封装uni.request ...

  4. 微信小程序wx.request请求封装,和跨域的解决。

    建议把所有请求抽离到不同页面对应的js文件中,可以方便后期的修改和排查问题,小程序请求是通过微信后台来请求我们的后台地址来进行后端映射.你请求的接口实际到微信的后端做了一道映射,微信后端拿到你的 wx ...

  5. vue的request请求封装

    ​ 在目录中创建 utils 文件 中创建 request.js ​request.js 其中已经对axios封装 , token拦截和session存储 import axios from 'axi ...

  6. 微信小程序 request请求封装

    request 只用 POST ,只封装了 POST ,等有用到 GET 再重写,接口用的 ThinkPHP5.0 主要代码 var apiurl = "xxxxx"; funct ...

  7. uniapp request请求封装

    使用luch-request插件 npm i luch-request -S 在根目录的api文件夹下创建一个 service.js /*** @version 3.0.5* @Author lu-c ...

  8. Go 基于原生的HTTP请求封装

    //发送HTTP请求 func SendHttpRequest(url,method ,body string,cookies []http.Cookie,headers []map[string]s ...

  9. Taro request 请求封装

    在根目录下创建service文件夹 再创建 baseUrl文件 写入请求地址 baseUrl.js const getBaseUrl = (url) => {let BASE_URL = ''; ...

  10. 前端学习(1257):基于promise处理ajax请求

最新文章

  1. 传送门(portal)
  2. bzoj1597[Usaco2008 Mar]土地购买
  3. payara 创建 集群_使用Payara Micro的Easy Java EE Microservices
  4. BZOJ 1878 HH的项链 | 主席树
  5. 在DataTable和DataView中查找指定记录
  6. android data文件夹操作
  7. php系统如何连接数据库服务器,php如何连接数据库服务器
  8. 火狐浏览器jtopo节点切换tab后消失报错NS_ERROR_FAILURE的解决
  9. IDEA卡顿解决方法
  10. PHP留言并展示_留言页面展示功能
  11. 杀死系统中的进程kill和killall命令
  12. 2021年SWPUACM暑假集训day2并查集算法
  13. 如何直观理解粒子滤波并进行Python编程实践
  14. 利用jieba对已爬取好的中国地名信息进行分词
  15. FOC控制原理——Clark变换和Park变换
  16. 计算机网络规划与设计
  17. 自定义input单选框样式
  18. 全国首款二级分销小程序上线
  19. 手把手写深度学习(18):finetune微调CLIP模型的原理、代码、调参技巧
  20. HUST Trainning 2015-06-14

热门文章

  1. 2017第八届(C/C++)B组蓝桥国赛题
  2. 面向对象19:内部类
  3. pandas loc, iloc, ix, at, iat用法
  4. 【图论】Prim算法求最小生成树详解
  5. NYOJ题目48-小明的调查作业
  6. 平滑滤波器模板尺寸与平滑效果的关系_冲压模具丨折弯尺寸、毛刺、、卯合、滑块不顺的根源...
  7. esxi linux 网络不可达,将ESXI所有的端口组迁移到分布式交换机的步骤
  8. String a = new String(“abc“); 到底创建了几个对象
  9. RocketMQ源码-基于Netty的通信层设计
  10. 关于域名的那些“彩蛋”