zoukankan      html  css  js  c++  java
  • 三.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方法中添加请求,绑定数据
     
     
    显示效果如下:
    但光加载数据还远远不够,后续会对列表进行组件封装,父子组件的通信,使其更加简洁,扩展性更强。
    增加下拉加载更多等优化用户体验的功能。
     
    以上,仅用于学习和总结!
     

  • 相关阅读:
    linux使用docker-compose部署软件配置
    Linux CentOS Python开发环境搭建教程
    Linux使用scp命令进行文件远程拷贝详解
    浅析Vue.js 中的条件渲染指令
    浅谈Vue响应式(数组变异方法)
    Laravel框架定时任务2种实现方式示例
    Docker 运行时的用户与组管理的方法
    laravel5实现微信第三方登录功能
    Linux服务器间文件实时同步的实现
    从零开始搭建vue移动端项目到上线的步骤
  • 原文地址:https://www.cnblogs.com/ywkcode/p/15680500.html
Copyright © 2011-2022 走看看