uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。

项目的开发离不开数据交互,一个好的request请求库可以让我们的开发事半功倍。uni-app也不例外,uni.request只提供基础请求功能,无法达到项目开发的要求,luch-request应运而生。

luch-request是什么?

luch-request 是一个基于Promise 开发的uni-app跨平台、项目级别的请求库,它有更小的体积,易用的api,方便简单的自定义能力。

luch-request诞生于19-05月,至今已迭代20多个版本。DCloud插件市场request类插件下载量第一。支持npm下载。

它能为我们解决什么问题?

  • 支持全局挂载
  • 支持多个全局配置实例
  • 支持自定义验证器
  • 支持文件上传/下载
  • 支持task 操作
  • 支持自定义参数
  • 支持多请求拦截器/响应拦截器
  • 对参数的处理比uni.request 更强

也许你还不明白这些有什么用。但是他却对应着我们开发中一个一个的痛点。

你的数据获取方式

uni.request({url: this.$baseUrl + 'api/user?arg1=data1'method: 'POST',data: {id:1},header: {Content-Type: '...', token: '....'}success: (res) => {},fail: (err) => {}
})

使用luch-request后

this.$http.post('/api/user', {id: 1
}, {params: {arg1: data1}
}).then(res => {...
}).catch(err => {...
})

它有什么优势?

条件编译开发: 减少代码体积,减少开发中debug时的误导影响。看不到对应终端额外的参数。

极易的自定义能力: 有些插件会把loading、auth等参数加入配置,使其做一些请求之外的操作,这些配置并不是所有人都会使用。request请求库只需专注于请求即可。luch-request对额外操作的处理则更为优雅,增加了custom配置,使开发者可以做一些自定义操作。

http.setConfig((config) => { /* config 为默认全局配置*/config.baseURL = 'http://www.quanzhan.co' /* 根域名 */config.custom = {loading: true // 默认有loading}return config
})
http.interceptors.request.use((config) => { /* 请求之前拦截器。可以使用async await 做异步操作 */config.header = {...config.header,a: 1 // 演示拦截器header加参}// 演示custom 用处if (config.custom.loading) {uni.showLoading()}return config
}, (config) => {return Promise.reject(config)
})http.interceptors.response.use(async (response) => { /* 请求之后拦截器。可以使用async await 做异步操作  */// if (response.data.code !== 200) { // 服务端返回的状态码不等于200,则reject()//   return Promise.reject(response)// }if (response.config.custom.loading) {uni.hideLoading()}return response
}, (response) => { // 请求错误做点什么。可以使用async await 做异步操作console.log(response)if (response.config.custom.loading) {uni.hideLoading()}return Promise.reject(response)
})// 单接口不想要loading
http.get('user/list', {custom: {loading: false}})
http.post('user/list', {}, {custom: {loading: false}})

易用的api设计: 部分api设计为降低学习成本,参照axios设计。并扩展一些其它的api,入门更加容易。

快速上手

npm
npm i luch-request -S

cli 用户使用npm 包需增加以下配置项目根路径下创建vue.config.js 文件,增加以下内容

// vue.config.jsmodule.exports = {transpileDependencies: ['luch-request']}
GitHub

GitHub

使用DCloud/luch-request 文件夹即可

DCloud插件市场

DCloud插件市场

luch-request官网

luch-request官网

更新历史

更新记录

为什么应该在uni-app项目里使用luch-request?相关推荐

  1. 切换 uniapp_万能前端框架uni app初探03:底部导航开发

    前言 本节我们使用uni app的底部导航功能,点击不同tab会显示不同页面,这个功能在实际项目开发中几乎是必备的. 一.基础知识 1.tabBar 如果应用是一个多 tab 应用,可以通过 tabB ...

  2. uni app 调用网络打印机_uni-app 的使用体验总结

    [实践] uni-app 的使用总结 最近使用 uni-app 的感受. 使用体验 没用之前以为真和 Vue 一样,用了之后才知道.有点类似 Vue 和 小程序结合的感觉.写类似小程序的标签,有着小程 ...

  3. uni app 开发微信小程序及上线体验

    uni app 开发微信小程序及上线体验 项目创建及微信小程序AppId的申请 本次开发的是电商类的微信小程序,这里用到的是HBuilderX这个编辑器.之前用的Visual Studio Code ...

  4. vue后台管理、APP项目总结集合

    文章目录 后台管理界面 APP 项目整体总结 别慌,内容看起来多,其实都是一些小干货啦 后台管理界面 搭建一个vue项目: 配置相应的环境,如安装node,vue,webpack(最好安装一下淘宝镜像 ...

  5. App项目实战之路(二):API篇

    原创文章,转载请注明:转载自Keegan小钢 并标明原文链接:http://keeganlee.me/post/practice/20160812 微信订阅号:keeganlee_me 写于2016- ...

  6. 第一次,触碰Web App项目,栽过的那些坑。

    此项目是一个IPad上的Web App项目,页面的滚动用了最新的IScroll 5.0 插件, 确实是挺潮的. 项目用时 1个月 完成的, 准备今天晚上上线. 这是年前的最后一篇文章了,与众位博友分享 ...

  7. Angular 项目里 angular.json 文件内容的学习笔记

    看一个基于 Angular 的 SAP Spartacus 项目里 angular.json 的例子: version: The configuration-file version. newProj ...

  8. VS2005(C#)里读取及改变App.config里appSettings节的值

    前几天做了一个C/S的项目,研究了一下App.config,写了一个读取及改变App.config里appSettings节的值的类,贴出来! using System; using System.C ...

  9. uni.app H5(微信公众号定位) uni.getLocation

    最近在开发公众号,由于之前经常使用uni,app写APP,索性就用uni.app来开发公众号了, 不过也遇到了一个问题,就是在公众号的首页要获取用户的定位.我看了看官网的API 有个uni.getLo ...

  10. 2022你不容错过的软件测试项目实战(APP项目实战)免费版

    前言 最近很多的人都在问我有没有什么项目可以用来练手,正好我这里有一个比较适合练手的项目,那就给大家安利一下吧,废话就不多说了. 项目名称: APP项目实战 项目说明: 本项目里面包括了功能测试.性能 ...

最新文章

  1. 复旦大学把衣服变成了显示器,能聊天能导航,水洗弯折都不怕 | Nature
  2. 数据告诉你史上最年轻35000分先生到底有多强?
  3. 4 项目开发 - 后台
  4. 五大要点分析手游美术设计:如何在前5分钟抓住玩家眼球
  5. Pixhawk原生固件PX4之位姿控制算法解读
  6. 伦敦大学金史密斯学院计算机专业,伦敦大学金史密斯学院 Goldsmiths, University of London...
  7. 集成LNMP/LAMP/FAMP的LuNamp2.1正式版开源发布
  8. Linux开机启动过程(9):进入内核入口点之前最后的准备工作
  9. MySQL安装编译时,/bin/rm: cannot remove `libtoolT': No such file or directory
  10. C++箴言:多态基类中将析构函数声明为虚拟zz
  11. 领健医美管理软件、美如云医美、宏脉有什么差异性
  12. 攻防世界 web高手进阶区 7分题 wtf.sh-150
  13. 用友ERP实施流程(不是本人所写,只是个搬运工!)
  14. RC延时电路延时计算
  15. 计算机设备管理器驱动,设备管理器安装驱动程序的详细教程
  16. Android 最常用的设计模式十 安卓源码分析——策略模式(Strategy)
  17. linux tar文件如何压缩文件,在 Linux 上压缩文件的 5 种方法
  18. JAVA毕业设计冠军体育用品购物网站计算机源码+lw文档+系统+调试部署+数据库
  19. Pomelo MMORPG
  20. 什么是AEC-Q200?AEC-Q200的认证对象和测试项目

热门文章

  1. MySQL之InnoDB架构浅析
  2. 今朝有酒今朝醉,明日愁来明日愁- 如何应对自己的坏习惯
  3. 从零搭建飞冰微前端项目《第四篇:权限管理》
  4. 【愚公系列】2022年04月 微信小程序-项目篇(公交查询)-03周边站点-获取周边站址
  5. js之正则表达式修饰符/ig
  6. 如何修改codeblocks主题
  7. 无盘服务器开机显示器无显示,电脑显示器无信号修复方法 | 专业网吧维护
  8. python matlibplot将不同数据的柱状图和折线图画在同一张图中
  9. typora新手使用笔记
  10. 电磁场与仿真软件(23)