ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Uni-app 之网络请求封装、响应数据加密解密

2022-05-04 14:32:17  阅读:165  来源: 互联网

标签:return url config app 封装 token Uni data prams


一、效果图

 

 二、http.js网络请求封装

import {
    config
} from '../config.js'

import md5 from 'js-md5'
import { aes_encrypt, aes_decrypt } from '@/utils/aes_endecrypt.js';
import {Base64} from '@/utils/base64.js'

export const apiResquest = (prams) => { //prams 为我们需要调用的接口API的参数 下面会贴具体代码

    //设置接口验证
    var timestamp = new Date().getTime(), token = md5(timestamp + config.APITOKEN)
    token = aes_encrypt(token + '_' + timestamp)
    let headerData = {}
    let dataObj = null
    //因为我们的GET和POST请求结构不同这里我们做处理,大家根据自己后台接口所需结构灵活做调整吧
    if (prams.method === "GET") {
        headerData = {
            'content-type': 'application/json',
            'token': token
        }
    } else {
        headerData = {
            'content-type': 'application/x-www-form-urlencoded',
            'token': token
        }
        dataObj = prams.query
    }
    return new Promise((resolve, reject) => {
        // 判断环境
        let url = (config.env=='develop'?config.test_url:config.base_url) + prams.url; //请求的网络地址和局地的api地址组合
        uni.showLoading({
            title: '加载中',
            mask: true
        })
        return uni.request({
            url: url,
            data: dataObj,
            method: prams.method,
            header: headerData,
            success: (res) => {
                //解密
                var data = JSON.parse(Base64.decode(aes_decrypt(Base64.decode(res.data))))
                console.log(data)
                uni.hideLoading()
                //这里是成功的返回码,大家根据自己的实际情况调整
                if (data.code == -2) {
                    uni.showToast({
                        title: data.message,
                        duration: 3000,
                        icon: "none"
                    })
                    return;
                }
                resolve(data);
            },
            fail: (err) => {
                reject(err);
                console.log(err)
                uni.hideLoading()
            }
        });
    })
}

三、服务端加密

function myAseEncode($txt, $key="")
{
    return base64_encode(openssl_encrypt($txt,"AES-128-ECB",$key,0));
}

function myAseDecode($txt, $key="")
{
    return openssl_decrypt($txt,"AES-128-ECB",$key,0);
}
/**
 * 返回数据
 * @param int $code
 * @param string $message
 * @param array $data
 */
function returnMsg($code = 200,$message = '',$data = [])
{
    $return['code'] = (int)$code;
    $return['message'] = $message;
    //$return['data'] = is_array($data) ? $data : ['info'=>$data];
    $return['data'] = $data;
    die(json_encode(myAseEncode(base64_encode(json_encode($return)))));
}

 

标签:return,url,config,app,封装,token,Uni,data,prams
来源: https://www.cnblogs.com/yang-2018/p/16221041.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有