OPERATION钩子
当客户端请求OPERATION编译成的API时(对应9991端口),依次经历登录校验,授权校验,入参校验,参数注入,执行OPERATION,响应转换等步骤。
接下来,我们学习下,该流程图上的分支:OPERATION钩子。
它分为2大类:全局钩子和局部钩子。
全局钩子所有的API共用同一个,都可以修改请求头对象,即ClientRequest。全局钩子有3个,包括:网关钩子(beforeOriginRequest)、数据源前置钩子(onOriginRequest)、数据源后置钩子(onOriginResponse)。
局部钩子每个API单独启停,从是否改变请求逻辑的角度,也可以分为两类:
不改变流程的前后置钩子:
前置钩子:preResolve、mutatingPreResolve
后置钩子:postResolve、mutatingPostResolve
能改变流程:
模拟钩子:mockResolve
自定义钩子:customResolve
HTTP请求流程图

为了方便理解,我们采用如下OPERATION说明情况。
全局钩子
网关钩子
beforeOriginRequest 钩子又名网关钩子,会拦截所有HTTP请求,可以改写请求内容,也可以终止后续流程。
暂未支持
数据源前置钩子
onOriginRequest 钩子又名数据源前置钩子,在请求每个数据源之前生效。可修改请求数据源时的请求头,也可以用来取消请求。常见用例是:动态授权,动态注入授权参数
数据源后置钩子
onOriginRequest 钩子又名数据源后置钩子,在请求每个数据源之后生效。可修改数据源返回的数据,也可以用来取消请求。常见用例是:若数据源不支持json,可用该方法转换协议
局部钩子
与全局钩子不同,每个OPERTION都有对应的局部钩子,由开关单独控制。
前置钩子
前置钩子在 "执行OPERATION"前执行,可校验参数或修改输入参数。
前置普通钩子
preResolve 钩子在参数注入后执行,能拿到请求入参,常用于入参校验。
前置修改入参钩子
mutatingPreResolve 钩子在参数注入后执行,能拿到请求入参,也能修改请求入参。
后置钩子
后置钩子在 "执行OPERATION" 后执行,可触发自定义操作或修改响应结果。
后置普通钩子
postResolve 钩子在响应转换后执行,能拿到请求入参和响应结果,常用于消息通知。
后置修改出参钩子
mutatingPostResolve 钩子在响应转换后执行,能拿到请求入参和响应结果,也能修改响应结果,且可以修改响应的结构!
模拟钩子
mockResolve 钩子在前置钩子后执行,可以用来模拟操作的响应。开启后,将跳过查询数据源,详情看 HTTP请求流程图。
自定义钩子
customResolve 钩子在模拟钩子后执行。此钩子可用于用自定义OPERATION解析器替换默认解析器。
有两个逻辑:
返回结构体:跳过执行OPERATION的逻辑,返回结构体
返回NULL:继续执行OPERATION逻辑

最后更新于
这有帮助吗?