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

一、效果图

 

 二、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)))));
}

 

posted @ 2022-05-04 14:22  样子2018  阅读(1007)  评论(0编辑  收藏  举报