账户中心 退出系统
6.0 版本 5.0 版本 3.0 版本
使用手册 模板中心 账户中心 合作 · 服务
6.0 版本 5.0 版本 3.0 版本
快速开始
框架介绍版权要求
更新日志
常见问题
框架部署目录结构
版本差别V 3 ~ 6
主题设置
深色模式
nvue 说明
数据转换格式问题
防抖节流技巧文章
页面布局 ( 12 )
页面组件 独创 · 好用
全屏加载 + 挂件
自定义头部返回 · 主页
动态头部导航
双击返回顶部
单击返回顶部
自定义底部导航
吸顶插槽布局
动态吸顶布局
iPhone 底部适配
小程序胶囊按钮躲避
下拉选择筛选 · 排序
页面背景色设置外链技巧
Flex 布局 ( 2 )
Flex 布局样式模式
Flex 布局组件模式
基础样式 ( 9 )
文本样式
内置颜色
徽章角标
定位样式absolute · fixed
按钮样式
常用标题
动画效果
图标使用使用及扩展
手势操作触屏 · 缩放
Grace.JS ( 18 )
工具介绍
网络请求
页面跳转
数据缓存
图片操作
设备信息
消息提示
头部导航 动态设置
底部导航 动态设置
元素选择
ref 获取 跨生命周期
字符常用
数组操作
随机数据
日期时间
延时循环
对象操作
MD5 加密
请求工具 ( 7 )
请求库介绍
GET 请求
POST 请求
POST 签名验证
文件上传
登录相关
后端代码 php 版本示例
常用组件 ( 12 )
图片组件
搜索组件
标签组件
星级组件
倒计时组件
链接组件
多图选择
多图上传
头像群组
数值动画
PK 投票
抽奖转盘
常用布局 ( 11 )
宫格布局
普通表格
排序组件
数据表格
横向公告
时间轴布局
步骤展示
骨架加载
瀑布流布局
启动页广告
底部分享
列表布局 ( 8 )
普通列表
滑动列表
可选列表
全选列表
树状列表
排序列表
卡片列表
卡片视图
切换布局 ( 9 )
切换导航单行
切换导航多行
局部选项卡
全屏选项卡
分段切换
折叠面板
竖向切换
分类切换
城市选择
滚动 · 轮播 ( 8 )
滚动区域
进度滚动
滚动公告
无缝滚动横向文本形式
无缝滚动横向卡片形式
竖向公告顺序卡片形式
轮播组件
主体滚动
刷新加载 ( 8 )
全屏加载
下拉刷新基于页面组件
加载更多基于页面组件
刷新和加载基于页面组件
返回顶部基于页面组件
刷新和加载自定义组合
刷新和加载原生组合模式
为空展示
弹层 · 对话框 ( 6 )
遮罩弹层
头部消息框
模态对话框
底部操作表
右侧菜单
弹出菜单
表单相关 ( 15 )
表单布局
表单验证
提交按钮
字数限制
功能标签 选择 · 删除
动态表单
分步提交
步进器
数字键盘
车牌键盘
滑动解锁
进度滑块
区间滑块
点选按钮
地区联动 省市区三级
日期时间 ( 6 )
日历日期 带有农历及时间
日期区间 日历形式
日期时间 picker 模式
时间段选择 picker 模式
日程日历 日程 · 提醒
横向日历 布局模式
文章相关 ( 12 )
文章列表 基础用法
文章列表 切换模式
文章列表 全屏选项卡模式
编辑器 新版 · 自主研发 · 多端兼容
编辑器 旧版 · 废弃保留
格式转换 旧版 · 废弃保留
内容渲染 新版 · 编辑器解析
文章详情 旧版 · 废弃保留
富文本加强 字符串转数组
展开阅读
评论布局
评论提交
媒体播放 ( 2 )
音乐播放器
视频播放器
地图使用 ( 3 )
位置标注
地图周边
拖拽定位
用户模板 ( 10 )
用户登录
手机登录
短信登录
短信验证
用户协议
个人中心
头像剪裁
证件上传
会员排行榜
手写签名
电商常用 ( 9 )
商品列表
商品详情
订单中心
购物车模板
排序与筛选
地址列表
地址添加
抽奖模板
优惠券组件
即时通讯 ( 3 )
消息展示组件
消息输入组件
消息列表布局
画布绘图 ( 3 )
二维码生成
条形码生成
海报生成
请求库介绍

手册版本 V6.0

GraceRequest 请求工具库介绍

GraceRequest 意在为大家提供一个更简洁的、更安全的请求工具,提供了全局 token 验证机制、签名校验机制以及会员校验机制,可以大幅度增加接口交互过程的安全;
我们为您提供了此工具的视频教程,包含后端原理,建议您在 GraceUI 已付费用户群 内下载观看 ( 视频为 5.0 版本, 6.0 与其原理一样,区别是 6.0 只提供 await 形式的接口  );


GraceRequest 特点

1 完全基于 promise 方式 ( promise 教程 : https://www.lesscode.work/sections/6273465961989.html );
2 使用便捷、交互安全性高。


注意事项

GraceRequest 对每一次交互都需进行基础 token 验证,并需要后端配和,如果您并不能适应此种方式您可以使用 uni.request() 来实现自己项目的接口交互工作;


兼容平台

H5APP小程序NVUE


请求流程

1. token 获取 [ 注意此 token 为基础请求 token,每一个请求都要求携带 ]
   1.1 首先检查本地是否已经保存 token 数据;
       1.1.1 存在并在有效期内 -> 参与提交;
       1.1.2 存在并已经过期 -> 连接 api 获取 token -> 本地保存 -> 参与提交;
       1.1.3 不存本地 token -> 连接 api 获取 token -> 本地保存 -> 参与提交;
2. 提交数据是利用 header 携带 token 数据, 后端接收并校验;
3. 后端校验成功 -> 执行逻辑 -> 返回结果 | 校验失败 -> 终止执行 -> 返回错误信息


使用流程

第一步 : 完善配置文件

请打开 /custom/graceRequestConfig.js 对接口基础地址、基础令牌函数等进行修改;

// grace reuqest 请求库相关配置
export default{
	// api 基础 url
	apiBaseUrl        : 'https://www.******.com/api/',
	// 调试模式 [ false 关闭调试输出,项目发包时请设置此项为 false ]
	debug             : true,
	// 本地 Token 数据键名称
	localTokenKeyName : 'reqToken',
	// 用户登录 Token 数据键名称
	userTokenKeyName  : 'uToken',
	// token 有效期, 单位 秒 ,要与后端保持一致
	expiredTime       : 3600,
	// post 方式 header[content-type] 默认值
	postHeaderDefault : 'application/x-www-form-urlencoded',
	// 接口请求秘钥 与后端开发人员协商格式及获取
	apiKey            : 'AppKey******',
	// 基础 token 获取 api 接口地址
	baseTokenUrl      : 'https://www.******.com/api/srequest/makeToken',
	// 从服务器获取 token 函数
	// 因后端语言不同、思路不同,请跟据自己的 api 情况完成 token 获取函数
	// 一个示例,实际开发请跟据自己情况复写此函数	
	getToken          : function(){
		var apiKey       = this.apiKey;
		var baseTokenUrl = this.baseTokenUrl;
		return new Promise((resolve, reject) => {
			// 发起请求
			uni.request({
				// token 授权 api 服务器地址
				url      : baseTokenUrl,
				// 请求秘钥
				data     : { 'appKey' : apiKey},
				// 请求方式 POST
				method   : "POST",
				// headers
				header   : {'content-type' : 'application/x-www-form-urlencoded'},
				// 返回值类型
				dataType : "json"
			}).then((res)=>{
				var data = res.data;
				if(data.status == 'ok'){
					// 将 token 保存在本地并记录获取时间
					uni.setStorageSync(this.localTokenKeyName, data.data);
					// 记录时间
					var dateObj = new Date();
					var cTime   = dateObj.getTime();
					cTime      += '';
					uni.setStorageSync('GraceRequestTokenTime', cTime);
					resolve(data.data);
				}else{
					reject('token error');
				}
			}).catch((e) => {reject('token error');});
		});
	},
	// 获取基础 token 失败提示函数
	tokenErrorMessage : function(){
		uni.showToast({
			title : "请求失败, 请重试",
			icon  : "none"
		})
	}
}


第二步 : 全局挂载请求库

请打开 main.js 添加以下代码,完成请求库全局挂载工作 : 

import App from './App'

/* 全局挂载请求库 */
import GraceRequest from '@/Grace6/js/request.js'
uni.gRequest = GraceRequest;

// 其他代码


第三步 : 在页面中使用请求库

<template>
	<gui-page ref="guiPage">
		<template v-slot:gBody >
			<view>
				<text>{{content}}</text>
			</view>
		</template>
	</gui-page>
</template>
<script>
export default{
	data() {
		return {
			content : null,
		}
	},
	onLoad : function(){
		this.requestDemo();
	},
	methods : {
		requestDemo : async function(){
			// 请求前置函数
			uni.gRequest.befor = ()=>{
				uni.showLoading({title:'加载中 ...'});
			}
			// 请求后置函数
			uni.gRequest.after = ()=>{
				uni.hideLoading();
			};
			// GET 请求
			try{
				// 请求成功
				let res = await uni.gRequest.get('srequest/index');
				console.log(res);
				this.content = res;
			}catch(e){
				// 请求失败
				console.log(e);
			}
		}
	}
}
</script>
<style>
</style>