启动钩子

任何语言实现的Fireboom钩子,本质上都是一个WEB服务,其遵循Fireboom规范注册对应路由。

任意语言的钩子服务启动时,都遵循如下流程。

Fireboom 同时只兼容一种语言的钩子!!!

读取配置文件

钩子服务需要依赖Fireboom服务的某些配置,因此需要读取Fireboom的配置文件:exported/generated/fireboom.config.json

为了便于读取,且减少冗余。Fireboom为fireboom.config.json创建了一个软连接,并生成到开启钩子的指定路径,例如:custom-go/generated/fireboom.config.json

其中,包含钩子启动所依赖的大部分信息,如

  • 钩子监听端口:serverOptions.listen.port

  • S3配置信息:s3UploadConfiguration

  • ...

读取该文件的代码如下:

读取环境变量

钩子服务还依赖Fireboom服务的环境变量,使用相对路径读取: ../.env

注册中间件

1,解析Fireboom调用钩子时携带的全局参数 _wg

2,为上下文ctx注入User对象,用于获取登录用户的信息

3,为上下文ctx注入InternalClient对象(用于内部调用

注册钩子

Fireboom中有各种类型的钩子,主要包括:

OPERATION钩子

身份验证钩子

graphql钩子

文件上传钩子

每个钩子开启后,都会生成对应模板,并按照规范注册路由。

开启钩子

开启钩子很简单,有两种方法:

  • 主功能区-> 概览面板 ,比较直观的展示了钩子所处的注入点,见上图

  • 主功能区-> 钩子面板 ,简单罗列了所有的钩子

**所有钩子都有约定的目录结构,**各类型钩子对应目录:

以golang钩子为例, 上图中的Simple OPERATION的 postResolve 钩子,对应 custom-go/hooks/Simple/postResolve.go 文件。

开启钩子时,若对应钩子的文件不存在,则会从github仓库对应文件中获取钩子模板,并在对应目录创建默认钩子文件。

所有类型钩子的默认模板,都存储在如下仓库:

其中golang钩子模板仓库如下:

引入钩子

不同语言引入钩子文件的方式不同,但都会动态生成一个入口文件,引入所有的钩子文件。

注册路由

引用入口文件的变量,注册各种钩子的路由。

启动钩子

启动服务

不同语言启动服务的方式不同,但一般都需要先安装依赖,再启动服务。

启动服务后,可通过健康检查接口,检测服务是否成功启动!

健康检查

健康检查接口,用于检查钩子服务健康状态,在界面上展示钩子是否已启动,见底部 状态栏-> 钩子 状态。

健康检查接口

GET http://127.0.0.1:9992/health

最后更新于

这有帮助吗?