feat(init): 支持beforeSend,开发者可在请求发送前通过hook处理数据
This commit is contained in:
30
README.md
30
README.md
@@ -1,5 +1,5 @@
|
||||
<p align="center"><img src="./image/logo.png" alt="weRequest" height="160"/></p>
|
||||
<h2 align="center">v1.4.1</h2>
|
||||
<h2 align="center">v1.5.0</h2>
|
||||
<p align="center"><b>解决繁琐的小程序会话管理,一款自带登录态管理的网络请求组件。</b></p>
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ weRequest.request({
|
||||
|参数名|类型|必填|默认值|说明|
|
||||
| :-------- | :-------| :------ | :------ |:------ |
|
||||
|sessionName|String|否|session|储存在localStorage的session名称,且CGI请求的data中会自动带上以此为名称的session值;可不配置,默认为session|
|
||||
|urlPerfix|String or Function|否||请求URL的固定前缀,如果配置了,后续请求的URL都会自动加上这个前缀,如果是函数,则为函数的返回值|
|
||||
|urlPerfix|String/Function|否||请求URL的固定前缀,如果配置了,后续请求的URL都会自动加上这个前缀,如果是函数,则为函数的返回值|
|
||||
|loginTrigger|Function|是||触发重新登录的条件;参数为CGI返回的数据,返回需要重新登录的条件|
|
||||
|codeToSession|Object|是||用code换取session的CGI配置|
|
||||
|reLoginLimit|Int|否|3|登录重试次数,当连续请求登录接口返回失败次数超过这个次数,将不再重试登录|
|
||||
@@ -175,8 +175,9 @@ weRequest.request({
|
||||
|sessionExpireKey|String|否|sessionExpireKey|如果为用户登陆态设置了本地缓存时间,则过期时间将以此值为key存储在Storage中|
|
||||
|doNotUseQueryString|Boolean|否|false|默认情况下,POST请求,登陆态除了带在请求body中,也会带在queryString上,如果配置了这个为true,则登陆态不带在queryString中|
|
||||
|setHeader|Object/Function|否||所有请求的header都会带上此对象中的字段|
|
||||
|beforeSend|Function|否||请求发送前的hook,开发者可在发送前自行处理数据|
|
||||
|
||||
##### codeToSession参数说明
|
||||
##### codeToSession对象参数说明
|
||||
|
||||
|参数名|类型|必填|默认值|说明|
|
||||
| :-------- | :-------| :------ | :------ |:------ |
|
||||
@@ -186,7 +187,7 @@ weRequest.request({
|
||||
|data|Object|否||登录接口需要的其他参数|
|
||||
|success|Function|是||接口返回成功的函数;需要返回session的值|
|
||||
|
||||
##### reportCGI返回参数说明
|
||||
##### reportCGI函数参数说明
|
||||
|参数名|类型|说明|
|
||||
| :-------- | :-------| :------ |
|
||||
|name|String|调用的接口名字,可在request接口的report字段配置|
|
||||
@@ -194,6 +195,12 @@ weRequest.request({
|
||||
|endTime|Int|请求返回时的时间戳|
|
||||
|request|Function|请求方法,可用于上报|
|
||||
|
||||
##### beforeSend函数参数说明
|
||||
|参数名|类型|说明|
|
||||
| :-------- | :-------| :------ |
|
||||
|obj|Object|请求对象,包含url,data,header,开发者可自行修改,并最后将obj对象返回|
|
||||
|session|String|登录态票据,开发者可按需将票据放入obj中|
|
||||
|
||||
#### 示例代码
|
||||
|
||||
```javascript
|
||||
@@ -455,4 +462,19 @@ weRequest.request({
|
||||
console.log(e.message); // 错误信息,已通过 `errorContent` 处理
|
||||
console.log(e.data); // 错误请求返回包体
|
||||
})
|
||||
```
|
||||
|
||||
### 业务登录态票据希望放在header里,需要怎么办?
|
||||
|
||||
可在调用`init`方法时,在钩子`beforeSend`中实现,举例如下:
|
||||
```javascript
|
||||
weRequest.init({
|
||||
// ...
|
||||
beforeSend(obj, session) {
|
||||
obj.header.session = session;
|
||||
// 切记修改完后,需要将obj返回
|
||||
return obj;
|
||||
},
|
||||
// ...
|
||||
})
|
||||
```
|
||||
1
build/interface.d.ts
vendored
1
build/interface.d.ts
vendored
@@ -22,6 +22,7 @@ export interface IInitOption {
|
||||
errorRetryBtn?: boolean;
|
||||
doNotUseQueryString?: boolean;
|
||||
errorHandler?: Function | null;
|
||||
beforeSend?: Function | null;
|
||||
}
|
||||
export interface ICodeToSessionOptions {
|
||||
url: string;
|
||||
|
||||
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": "we-request",
|
||||
"version": "1.4.1",
|
||||
"version": "1.5.0",
|
||||
"description": "本工具通过拓展小程序的wx.request,让开发者通过简单的配置,实现自动管理登录态等功能",
|
||||
"keywords": [
|
||||
"登录态",
|
||||
|
||||
@@ -52,6 +52,8 @@ export interface IInitOption {
|
||||
doNotUseQueryString?: boolean;
|
||||
/* 自定义错误处理函数 */
|
||||
errorHandler?: Function | null;
|
||||
/* 请求发送前,提供hook给开发者自定义修改发送内容 */
|
||||
beforeSend?: Function | null;
|
||||
}
|
||||
|
||||
export interface ICodeToSessionOptions{
|
||||
|
||||
@@ -142,6 +142,9 @@ function getGlobalData() {
|
||||
|
||||
function doRequest(obj: IRequestOption) {
|
||||
obj = initializeRequestObj(obj);
|
||||
if (typeof config.beforeSend === "function") {
|
||||
obj = config.beforeSend(obj, status.session);
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.request({
|
||||
url: obj.url,
|
||||
@@ -161,7 +164,7 @@ function doRequest(obj: IRequestOption) {
|
||||
obj.complete();
|
||||
}
|
||||
if (obj.showLoading) {
|
||||
loading.hide()
|
||||
loading.hide();
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -170,6 +173,9 @@ function doRequest(obj: IRequestOption) {
|
||||
|
||||
function doUploadFile(obj: IUploadFileOption) {
|
||||
obj = initializeUploadFileObj(obj);
|
||||
if (typeof config.beforeSend === "function") {
|
||||
obj = config.beforeSend(obj, status.session);
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.uploadFile({
|
||||
url: obj.url,
|
||||
@@ -188,7 +194,7 @@ function doUploadFile(obj: IUploadFileOption) {
|
||||
obj.complete();
|
||||
}
|
||||
if (obj.showLoading) {
|
||||
loading.hide()
|
||||
loading.hide();
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -28,7 +28,9 @@ const defaultConfig: IInitOption = {
|
||||
// session在本地缓存的key
|
||||
sessionExpireKey: "sessionExpireKey",
|
||||
// 自定义错误处理函数
|
||||
errorHandler: null
|
||||
errorHandler: null,
|
||||
// 请求发送前,提供hook给开发者自定义修改发送内容
|
||||
beforeSend: null
|
||||
};
|
||||
|
||||
export default defaultConfig;
|
||||
|
||||
Reference in New Issue
Block a user