Constructor
new CloudFuncPlugin(pluginNameopt, fakeDomainopt, fakeRootPathopt)
- Source:
构造函数
Examples
使用默认配置
let requester = new Requester({
plugins: [
new CloudFuncPlugin() //使用默认配置
]
});
//则调用接口
let res = await requester.request({
url: 'https://cloud.function/xxx?a=1&b=2'
});
//等价于调用云函数
let res = await wx.cloud.callFunction({
name: 'xxx',
data: {
a: "1",
b: "2",
}
})
自定义虚拟域名和虚拟路径
let requester = new Requester({
plugins: [
new CloudFuncPlugin({ //自定义虚拟域名和虚拟路径
fakeDomain: 'fancy.com',
fakeRootPath: '/demos/cloud/'
})
]
});
//则调用指定虚拟域名虚拟路径下的接口
let res = await requester.request({
url: 'https://fancy.com/demos/cloud/xxx?a=1&b=2'
});
//等价于调用对应云函数
let res = await wx.cloud.callFunction({
name: 'xxx',
data: {
a: "1",
b: "2",
}
})
云函数实现
exports.main = async (event, context) => {
//云函数格式约定:
let {a, b} = event; //调用方传入的参数可以通过event获取
a = Number(a); //参数类型统一为string
b = Number(b);
//此外,还会额外拼入一些http相关参数
let {reqHeader} = event; //http请求header信息
console.log(reqHeader.cookie); //header中的cookie字段会解析成对象格式,形如:{uid: 'xxx'}
//处理结果正常返回
let result = { sum: a+b };
//此外,有一些保留字段可以用于设置http相关参数
result.resStatusCode = 200; //设置http状态码
result.resHeader = {}; //设置http返回结果中的header信息
result.resHeader['Set-Cookie'] = [ //同一header有多条记录时,以数组形式设置
'uid=xxx;expires=111',
'sessionKey=yyy;expires=222'
]
return result;
}
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
pluginName |
string |
<optional> |
'CloudFuncPlugin'
|
插件名称 |
fakeDomain |
string |
<optional> |
'cloud.function'
|
虚拟域名 |
fakeRootPath |
string |
<optional> |
'/'
|
虚拟根路径 |
Extends
Members
pluginName :string
- Source:
- Overrides:
插件名称,主要用于打印日志和调试,便于追溯操作源
Type:
- string
requester :Requester
- Source:
- Overrides:
请求管理器
Type:
Methods
(async, protected) _execCloudFunc(funcName, funcParams) → {Object}
执行云函数
Parameters:
Name | Type | Description |
---|---|---|
funcName |
string | 函数名 |
funcParams |
object | 函数入参 |
Returns:
云函数执行结果
- Type
- Object
(protected) _parseReq(reqOptions) → {Object}
解析请求,将http请求解析成云函数调用
Parameters:
Name | Type | Description |
---|---|---|
reqOptions |
Requester~ReqOptions |
Returns:
解析结果,格式形如:{
hit: true, //是否为云函数调用
funcName: 'xxx', //云函数函数名
funcParams: { //云函数入参
a: "1",
b: "2",
reqHeader: {}
}
}
- Type
- Object
(protected) _parseRes(cloudRes) → {Requester~ReqRes}
解析返回结果,将云函数返回结果解析成http请求结果
Parameters:
Name | Type | Description |
---|---|---|
cloudRes |
Object | 云函数执行结果 |
Returns:
对应的http请求结果
- Type
- Requester~ReqRes
afterRequest(reqOptions, thisIssuer, reqRes) → {undefined|Requester~AfterRequestRes}
- Source:
- Overrides:
钩子函数,请求返回之后调用,同步
不会等待异步操作返回,如需等待异步逻辑,请改用BasePlugin#afterRequestAsync
Parameters:
Name | Type | Description |
---|---|---|
reqOptions |
Requester~ReqOptions | 请求参数 |
thisIssuer |
object | 发起接口请求的this对象 |
reqRes |
Requester~ReqRes | 请求结果 |
Returns:
期望的后续处理,undefined表示继续执行默认流程
- Type
- undefined | Requester~AfterRequestRes
(async) afterRequestAsync(reqOptions, thisIssuer, reqRes) → {undefined|Requester~AfterRequestRes}
- Source:
- Overrides:
钩子函数,请求返回之后调用,异步
会等待async函数resolve,若无异步逻辑,建议使用BasePlugin#afterRequest
Parameters:
Name | Type | Description |
---|---|---|
reqOptions |
Requester~ReqOptions | 请求参数 |
thisIssuer |
object | 发起接口请求的this对象 |
reqRes |
Requester~ReqRes | 请求结果 |
Returns:
期望的后续处理,undefined表示继续执行默认流程
- Type
- undefined | Requester~AfterRequestRes
beforeRequest(reqOptions, thisIssuer) → {undefined|Requester~BeforeRequestRes}
- Source:
- Overrides:
钩子函数,发请求之前调用,同步
不会等待异步操作返回,如需等待异步逻辑,请改用BasePlugin#beforeRequestAsync
Parameters:
Name | Type | Description |
---|---|---|
reqOptions |
Requester~ReqOptions | 请求参数 |
thisIssuer |
object | 发起接口请求的this对象 |
Returns:
期望的后续处理,undefined表示继续执行默认流程
- Type
- undefined | Requester~BeforeRequestRes
(async) beforeRequestAsync(reqOptions, thisIssuer) → {undefined|Requester~BeforeRequestRes}
- Source:
- Overrides:
钩子函数,发请求之前调用,异步
会等待async函数resolve,若无异步逻辑,建议使用BasePlugin#beforeRequest
Parameters:
Name | Type | Description |
---|---|---|
reqOptions |
Requester~ReqOptions | 请求参数 |
thisIssuer |
object | 发起接口请求的this对象 |
Returns:
期望的后续处理,undefined表示继续执行默认流程
- Type
- undefined | Requester~BeforeRequestRes
mount(requester)
- Source:
- Overrides:
钩子函数,插件被挂载到requester对象上时触发
Parameters:
Name | Type | Description |
---|---|---|
requester |
Requester | 被挂载到的requester对象 |