三.UniApp入门教程- Api请求和封装
本篇在《UniApp入门教程- 项目创建》基础上,对首页信息数据进行动态绑定,封装了http请求并对请求API进行集中管理
使用uView的Api请求工具 https://v1.uviewui.com/js/http.html
该插件适用于一般的请求场景,只支持post,get,put,delete请求,不适用于上传下载,插件定位小而美,而不是大而全
首先在项目中创建文件夹“common”,新建两个文件“http.api.js”,"http.interception.js"
其中http.api.js用来封装常用的请求地址,http.interceptor.js 配置文件和拦截器相关代码
http.api.js:
let indexUrl = '/api/index'; const install = (Vue, vm) => { // 此处没有使用传入的params参数 let index = (params = {}) => vm.$u.get(indexUrl ); vm.$u.api = { index }; //或者写成 //vm.$u.api={} //vm.$u.api.authIndex=params=>vm.$u.post('/api/auth/login',params) } export default { install }
http.interceptor.js:
1 const install = (Vue, vm) => { 2 // 此为自定义配置参数,具体参数见上方说明 3 Vue.prototype.$u.http.setConfig({ 4 5 baseUrl: 'http://localhost:5030', // 请求的本域名 6 method: 'POST', 7 // 设置为json,返回后会对数据进行一次JSON.parse() 8 dataType: 'json', 9 showLoading: true, // 是否显示请求中的loading 10 loadingText: '请求中...', // 请求loading中的文字提示 11 loadingTime: 800, // 在此时间内,请求还没回来的话,就显示加载中动画,单位ms 12 originalData: false, // 是否在拦截器中返回服务端的原始数据 13 loadingMask: true, // 展示loading的时候,是否给一个透明的蒙层,防止触摸穿透 14 // 配置请求头信息 15 header: { 16 'content-type': 'application/json;charset=UTF-8' 17 }, 18 }); 19 20 // 请求拦截部分,如配置,每次请求前都会执行,见上方说明 21 Vue.prototype.$u.http.interceptor.request = (config) => { 22 // ...... 23 return config; 24 } 25 26 // 响应拦截,如配置,每次请求结束都会执行本方法 27 Vue.prototype.$u.http.interceptor.response = (res) => { 28 console.log(res); 29 return res; 30 if (res.code == 200) { 31 // res为服务端返回值,可能有code,result等字段 32 // 这里对res.result进行返回,将会在this.$u.post(url).then(res => {})的then回调中的res的到 33 // 如果配置了originalData为true,请留意这里的返回值 34 return res.result; 35 } else { 36 // 如果返回false,则会调用Promise的reject回调, 37 // 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中,res为服务端的返回值 38 return false; 39 } 40 } 41 } 42 43 export default { 44 install 45 }
main.js 配置:
1 // http接口API集中管理引入部分 2 import httpApi from '@/common/http.api.js' 3 Vue.use(httpApi, app) 4 5 // http拦截器,此为需要加入的内容,如果不是写在common目录,请自行修改引入路径 6 import httpInterceptor from '@/common/http.interceptor.js' 7 // 这里需要写在最后,是为了等Vue创建对象完成,引入"app"对象(也即页面的"this"实例) 8 Vue.use(httpInterceptor, app)
在上一篇《UniApp入门教程- 项目创建》中,修改首页中的行业咨询,使得数据动态绑定
在本地运行接口项目,这里以.net core api为例
在http.api.js中添加请求Url:
找到pages->index->index.vue,在onload方法中添加请求,绑定数据
显示效果如下:
但光加载数据还远远不够,后续会对列表进行组件封装,父子组件的通信,使其更加简洁,扩展性更强。
增加下拉加载更多等优化用户体验的功能。
以上,仅用于学习和总结!