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)))));
}
复制代码

 

如果你感觉有收获,欢迎给我打赏 ———— 以激励我输出更多优质内容,联系QQ:2575404985
        
posted @   样子2018  阅读(1142)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2021-05-04 TP5框架 之ajax返回html模板
2019-05-04 PHP 之获取Windows下CPU、内存的使用率
2019-05-04 Mysql 之show status数据详解
2019-05-04 Python 之类型转换
2019-05-04 Python 之数据类型
点击右上角即可分享
微信分享提示