作者:Ray依依 | 来源:互联网 | 2023-09-07 15:10
一、效果图 二、http.js网络请求封装import{config}from..config.jsimportmd5fromjs-md5import{aes_encrypt,a
一、效果图
二、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)))));
}