美文网首页
编程大白话之-uni-app中请求接口的封装

编程大白话之-uni-app中请求接口的封装

作者: Han涛_ | 来源:发表于2020-01-21 10:03 被阅读0次

    在项目的开发中,我们会有很多的接口,而接口的封装,也是我们经常遇到的,今天就将uni-app中对于接口封装的方法来与大家一起分享,有不足的地方,希望提出您的建议!

    在项目中登录成功后,后端给了一个token,每次请求不同接口时都要验证这个token,而且不同页面又会有很多请求的接口,如果每次都去获取存储的token,再发送请求代码量比较多,而且页面不美观,进行封装在api文件中。

    针对开发环境和生产环境,将域名进行封装,自动识别更改。

    config.js文件中使用process.env.NODE_ENV可以自动编译出当前环境。

    let url_path={};
    // 开发环境
    if(process.env.NODE_ENV === 'development'){
        url_path = {
            'base_url': 'http://79.97.771.177:8881'
        }
    }
    // 生产环境
    if(process.env.NODE_ENV === 'production'){
        url_path = {
            'base_url': 'http://79.97.771.177:8881'
        }
    }
    export default url_path
    
    
    DBD41911BB724C49AFD9B23C5C341728.jpg

    request.js 主要写默认GET请求和POST请求的方法

    import url_path from '../common/config.js';
    function base_request (url, data, method = 'GET', header = {})  {
        data = Object.assign({}, {
            'tokenClientKey': JSON.parse(uni.getStorageSync('user_info')).tokens
        }, data)
        return uni.request({
            method,
            data,
            url: url_path['base_url'] + url, 
            header
        })
    }
    
    function postReq(url, data) {
        return base_request(url, data, 'POST', {});
    }
    
    function getReq(url, data) {
        return base_request(url, data);
    }
    
    export default {
        postReq,
        getReq
    }
    

    user/index.js 存放初始化页面使用的接口

    import BASE from '../request.js';
    
    export default {
        login(data) { // 初始缺陷列表
            return BASE.getReq('/ccbcase/m?xwl=api/sys/icdp/bug/crud/select', data)
        },
     }
    

    bugDispose/index.js 存放在修改页面不同接口

    import BASE from '../request.js';
    
    export default {
        bug_status(data) {  // 处理缺陷
            return BASE.getReq('/ccbcase/m?xwl=api/sys/icdp/bug/keybuffer/bg_status', data)
        },
        distributeList(data) { // 分配人员
            return BASE.getReq('/Wb7/m?xwl=CcbCaseMobile/guishuren', data)
        },
        firstDir(data) { // 一级目录
            return BASE.getReq('/Wb7/m?xwl=CcbCaseMobile/yijimulu', data)
        },
        secondDir(data) { // 二级目录
            return BASE.getReq('/Wb7/m?xwl=CcbCaseMobile/erjimulu', data)
        }
    }
    

    index.js 将各种分类的接口集中抛出

    import User from './user/index.js';
    import BugDipose from './bugDispose/index.js' 
    
    export default {
        User,
        BugDipose
    }
    

    页面调用时

    import API from '../../api/index.js'
        console.log(API, 'API')
    
     // 处理缺陷
    API.BugDipose.bug_status({})  // 如果需要传参,在{}中进行填写
    .then(data => {
        uni.hideLoading();
        var [error, res] = data;
        if(res.data.respCode == 200){
            this.statusArr = [];
            // this.firstDir.concat(res.data.bugStatus[this.details.BG_STATUS]);
            if(res.data.bugStatus[this.details.BG_STATUS] == undefined) {
                this.statusArr.push('已解决');
            } else {
                this.statusArr.push(...res.data.bugStatus[this.details.BG_STATUS]);
                this.statusIndex = res.data.bugStatus[this.details.BG_STATUS].indexOf(this.details.BG_STATUS);
            }
            // console.log(this.statusArr, 'get3 缺陷状态');
        }
    }),
    

    相关文章

      网友评论

          本文标题:编程大白话之-uni-app中请求接口的封装

          本文链接:https://www.haomeiwen.com/subject/gitezctx.html