some bugfix
This commit is contained in:
2
build/api/init.d.ts
vendored
2
build/api/init.d.ts
vendored
@@ -1,7 +1,7 @@
|
||||
/// <reference types="wx" />
|
||||
export interface IInitOption {
|
||||
codeToSession: ICodeToSessionOptions;
|
||||
sessionName?: string;
|
||||
sessionName: string;
|
||||
urlPerfix?: string | (() => string);
|
||||
doNotCheckSession?: boolean;
|
||||
reLoginLimit?: number;
|
||||
|
||||
5
build/util/url.d.ts
vendored
Normal file
5
build/util/url.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
declare function setParams(url: string, params: object): string;
|
||||
declare const _default: {
|
||||
setParams: typeof setParams;
|
||||
};
|
||||
export default _default;
|
||||
File diff suppressed because one or more lines are too long
4
build/weRequest.min.js
vendored
4
build/weRequest.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wxapp-session-request",
|
||||
"version": "1.1.0",
|
||||
"name": "we-request",
|
||||
"version": "1.2.0",
|
||||
"description": "本工具通过拓展小程序的wx.request,让开发者通过简单的配置,实现自动管理登录态等功能",
|
||||
"keywords": [
|
||||
"登录态",
|
||||
|
||||
@@ -5,7 +5,7 @@ export interface IInitOption {
|
||||
/* 用code换取session的CGI配置 */
|
||||
codeToSession: ICodeToSessionOptions;
|
||||
/* 储存在localStorage的session名称,且CGI请求的data中会自动带上以此为名称的session值;可不配置,默认为session */
|
||||
sessionName?: string;
|
||||
sessionName: string;
|
||||
/* 请求URL的固定前缀,如果配置了,后续请求的URL都会自动加上这个前缀,如果是函数,则为函数的返回值 */
|
||||
urlPerfix?: string | (() => string);
|
||||
/* 是否需要调用checkSession,验证小程序的登录态过期;若业务不需要使用到session_key,则可配置为true */
|
||||
@@ -66,7 +66,7 @@ export interface IInitOption {
|
||||
/* codeToSession的上报字段名 */
|
||||
report?: string;
|
||||
}
|
||||
|
||||
|
||||
|
||||
export default (params: IInitOption) => {
|
||||
const config: IInitOption = {...params, ...defaultConfig}
|
||||
|
||||
@@ -6,7 +6,8 @@ import cacheManager from './cacheManager'
|
||||
import sessionManager from './sessionManager'
|
||||
import errorHandler from './errorHandler'
|
||||
import responseHandler from './responseHandler'
|
||||
import durationReporter from "./durationReporter";
|
||||
import durationReporter from "./durationReporter"
|
||||
import url from '../util/url'
|
||||
|
||||
// 格式化url
|
||||
function format(url: string) {
|
||||
@@ -49,8 +50,10 @@ function preDo(obj: TODO) {
|
||||
})(obj.complete)
|
||||
}
|
||||
|
||||
obj.originUrl = obj.url;
|
||||
obj.url = format(obj.url);
|
||||
if(!obj.originUrl) {
|
||||
obj.originUrl = obj.url;
|
||||
obj.url = format(obj.url);
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
@@ -79,23 +82,12 @@ function initialize(obj: TODO, container: TODO) {
|
||||
|
||||
// 如果请求不是GET,则在URL中自动加上登录态和全局参数
|
||||
if (obj.method !== "GET") {
|
||||
|
||||
if (status.session) {
|
||||
if (obj.url.indexOf('?') >= 0) {
|
||||
obj.url += '&' + config.sessionName + '=' + encodeURIComponent(status.session);
|
||||
} else {
|
||||
obj.url += '?' + config.sessionName + '=' + encodeURIComponent(status.session);
|
||||
}
|
||||
}
|
||||
|
||||
// 如果有全局参数,则在URL中添加
|
||||
for (let i in gd) {
|
||||
if (obj.url.indexOf('?') >= 0) {
|
||||
obj.url += '&' + i + '=' + gd[i];
|
||||
} else {
|
||||
obj.url += '?' + i + '=' + gd[i];
|
||||
}
|
||||
let params: any = {};
|
||||
params[config.sessionName] = status.session;
|
||||
obj.url = url.setParams(obj.url, params);
|
||||
}
|
||||
obj.url = url.setParams(obj.url, gd);
|
||||
}
|
||||
|
||||
durationReporter.start(obj);
|
||||
@@ -127,6 +119,7 @@ function doRequest(obj: TODO) {
|
||||
}
|
||||
|
||||
function doUploadFile(obj: TODO) {
|
||||
obj = initialize(obj, 'formData');
|
||||
obj.count++;
|
||||
wx.uploadFile({
|
||||
url: obj.url,
|
||||
|
||||
@@ -42,7 +42,7 @@ function response(res: wx.RequestSuccessCallbackResult | wx.UploadFileSuccessCal
|
||||
requestHandler[method](obj)
|
||||
}
|
||||
})
|
||||
} else if (config.successTrigger!(res.data) && typeof obj.success === "function") {
|
||||
} else if (config.successTrigger!(res.data)) {
|
||||
// 接口返回成功码
|
||||
let realData = null;
|
||||
try {
|
||||
@@ -52,7 +52,7 @@ function response(res: wx.RequestSuccessCallbackResult | wx.UploadFileSuccessCal
|
||||
}
|
||||
if(!obj.noCacheFlash) {
|
||||
// 如果为了保证页面不闪烁,则不回调,只是缓存最新数据,待下次进入再用
|
||||
obj.success(realData);
|
||||
typeof obj.success === "function" && obj.success(realData);
|
||||
}
|
||||
// 缓存存储
|
||||
cacheManager.set(obj, realData);
|
||||
|
||||
28
src/util/url.ts
Normal file
28
src/util/url.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
function setParams(url: string, params: object) {
|
||||
let queryStringIndex = url.indexOf('?');
|
||||
let kvp: any = {};
|
||||
if (queryStringIndex >= 0) {
|
||||
let oldQueryString = url.substr(queryStringIndex + 1).split('&');
|
||||
for (let i = 0; i < oldQueryString.length; i++) {
|
||||
let kv = oldQueryString[i].split('=');
|
||||
kvp[kv[0]] = kv[1]
|
||||
}
|
||||
}
|
||||
|
||||
kvp = {...kvp, ...params};
|
||||
|
||||
let queryString = Object.keys(kvp).map(key => {
|
||||
return `${key}=${encodeURI(kvp[key])}`
|
||||
}).join('&');
|
||||
|
||||
if (queryStringIndex >= 0) {
|
||||
return url.substring(0, queryStringIndex + 1) + queryString
|
||||
} else {
|
||||
return url + "?" + queryString
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default {
|
||||
setParams
|
||||
}
|
||||
Reference in New Issue
Block a user