fix: change some params to be not required

This commit is contained in:
TENCENT\ivinwu
2019-03-08 22:50:32 +08:00
parent 399b465e9b
commit c41ba656e3
12 changed files with 68 additions and 66 deletions

View File

@@ -1,7 +1,7 @@
declare const _default: () => {
urlPerfix: string | (() => string) | undefined;
sessionExpireTime: number | undefined;
sessionExpireKey: string;
sessionExpireKey: string | undefined;
sessionExpire: any;
};
export default _default;

18
build/interface.d.ts vendored
View File

@@ -9,7 +9,7 @@ export interface IInitOption {
reportCGI?: boolean | ((name: string, startTime: number, endTime: number, request: Function) => void);
mockJson?: any;
globalData?: boolean | object | Function;
sessionExpireKey: string;
sessionExpireKey?: string;
sessionExpireTime?: number;
loginTrigger?: (res: string | IAnyObject | ArrayBuffer) => boolean;
successTrigger: (res: string | IAnyObject | ArrayBuffer) => boolean;
@@ -38,10 +38,10 @@ export interface IRequestOption extends IRequestObject {
catchError?: boolean;
}
export interface IRequestObject extends wx.RequestOption {
originUrl: string;
reLoginCount: number;
_reportStartTime: number;
_reportEndTime: number;
originUrl?: string;
reLoginCount?: number;
_reportStartTime?: number;
_reportEndTime?: number;
}
export interface IUploadFileOption extends IUploadFileObject {
beforeSend?: Function;
@@ -53,10 +53,10 @@ export interface IUploadFileOption extends IUploadFileObject {
catchError?: boolean;
}
export interface IUploadFileObject extends wx.UploadFileOption {
originUrl: string;
reLoginCount: number;
_reportStartTime: number;
_reportEndTime: number;
originUrl?: string;
reLoginCount?: number;
_reportStartTime?: number;
_reportEndTime?: number;
}
export interface IGetConfigResult {
urlPerfix?: string | (() => string);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
{
"name": "we-request",
"version": "1.2.0",
"version": "1.2.1",
"description": "本工具通过拓展小程序的wx.request让开发者通过简单的配置实现自动管理登录态等功能",
"keywords": [
"登录态",

View File

@@ -4,20 +4,14 @@ import { IInitOption } from '../interface'
export default (params: IInitOption) => {
Object.assign(config, params);
// 如果配置更改了session的存储名字则重新获取一次session
if (params.sessionName) {
try {
status.session = wx.getStorageSync(config.sessionName!) || '';
} catch (e) {
console.error('wx.getStorageSync:fail, can not get session.')
}
try {
status.session = wx.getStorageSync(config.sessionName!) || '';
} catch (e) {
console.error('wx.getStorageSync:fail, can not get session.')
}
// 如果配置更改了session过期时间的存储名字则重新获取一次session的过期时间
if (params.sessionExpireKey) {
try {
status.sessionExpire = wx.getStorageSync(config.sessionExpireKey) || Infinity;
} catch (e) {
console.error('wx.getStorageSync:fail, can not get sessionExpire.')
}
try {
status.sessionExpire = wx.getStorageSync(config.sessionExpireKey || "sessionExpireKey") || Infinity;
} catch (e) {
console.error('wx.getStorageSync:fail, can not get sessionExpire.')
}
}

View File

@@ -27,7 +27,7 @@ export interface IInitOption {
/** 所有请求都会自动带上这里的参数 */
globalData?: boolean | object | Function;
/** session在本地缓存的key */
sessionExpireKey: string;
sessionExpireKey?: string;
/* session在本地缓存的有效时间单位ms */
sessionExpireTime?: number;
/* 触发重新登录的条件参数为CGI返回的数据返回需要重新登录的条件 */
@@ -89,13 +89,13 @@ export interface IRequestOption extends IRequestObject {
export interface IRequestObject extends wx.RequestOption{
/* 业务请求的原始url */
originUrl: string;
originUrl?: string;
/* 重登陆次数 */
reLoginCount: number;
reLoginCount?: number;
/* 请求发起的时间戳 */
_reportStartTime: number;
_reportStartTime?: number;
/* 请求返回的时间戳 */
_reportEndTime: number;
_reportEndTime?: number;
}
export interface IUploadFileOption extends IUploadFileObject {
@@ -117,13 +117,13 @@ export interface IUploadFileOption extends IUploadFileObject {
export interface IUploadFileObject extends wx.UploadFileOption {
/* 业务请求的原始url */
originUrl: string;
originUrl?: string;
/* 重登陆次数 */
reLoginCount: number;
reLoginCount?: number;
/* 请求发起的时间戳 */
_reportStartTime: number;
_reportStartTime?: number;
/* 请求返回的时间戳 */
_reportEndTime: number;
_reportEndTime?: number;
}
export interface IGetConfigResult {

View File

@@ -1,6 +1,9 @@
import { IRequestOption } from "../interface"
function get(obj: IRequestOption) {
if (!obj.originUrl) {
return;
}
wx.getStorage({
key: obj.originUrl,
success (res) {
@@ -20,6 +23,9 @@ function get(obj: IRequestOption) {
}
function set(obj: IRequestOption , realData: string | object) {
if (!obj.originUrl) {
return;
}
if (
obj.cache === true ||
(typeof obj.cache === "function" && obj.cache(realData))

View File

@@ -8,7 +8,7 @@ function start(obj: IRequestOption | IUploadFileOption) {
function end(obj: IRequestOption | IUploadFileOption) {
obj._reportEndTime = new Date().getTime();
if(obj.report) {
if(obj.report && obj._reportStartTime) {
report(obj.report as string, obj._reportStartTime, obj._reportEndTime);
}
}

View File

@@ -5,13 +5,13 @@ import { IRequestOption, IUploadFileOption } from "../interface"
function get(obj: IRequestOption | IUploadFileOption, method: "request" | "uploadFile"): any {
if(!(config.mockJson[obj.url] || config.mockJson[obj.originUrl])) {
if(!(config.mockJson[obj.url] || (obj.originUrl && config.mockJson[obj.originUrl]))) {
// mock 没有对应接口的数据
console.error('mock 没有对应接口的数据');
return false;
}
let data = config.mockJson[obj.url] || config.mockJson[obj.originUrl];
let data = config.mockJson[obj.url] || (obj.originUrl ? config.mockJson[obj.originUrl] : '');
// deep copy
data = JSON.parse(JSON.stringify(data));
const res = {

View File

@@ -29,7 +29,7 @@ function response(
durationReporter.end(obj);
if (config.loginTrigger!(res.data) && obj.reLoginCount < config.reLoginLimit!) {
if (config.loginTrigger!(res.data) && obj.reLoginCount && obj.reLoginCount < config.reLoginLimit!) {
// 登录态失效,且重试次数不超过配置
sessionManager.delSession();
if(method === "request") {

View File

@@ -141,7 +141,7 @@ function code2Session(code: string) {
// 换回来的session不需要再checkSession
config.doNotCheckSession = true;
// 如果有设置本地session过期时间
if (config.sessionExpireTime) {
if (config.sessionExpireTime && config.sessionExpireKey) {
status.sessionExpire = new Date().getTime() + config.sessionExpireTime;
wx.setStorage({
key: config.sessionExpireKey,