插件
基本准则
- 插件是网关实现业务逻辑的核心组件,应提供良好的设计,且不应该频繁变更定义。
- 插件与网关之间通过可序列化的数据通信。
- 插件模块仅提供插件定义、加载、及执行,不应提供插件注册、卸载等管理功能,这些功能交给网关自身实现。
插件分类
全局插件
全局插件对整个网关的所有请求生效(不含控制台请求,因为控制台是独立的)。
全局插件分两个阶段执行:
- 请求阶段:在请求到达API处理端点前执行,可对请求改写、安全验证、限流、缓存等。
- 响应阶段:在API处理完成,响应客户端前执行,可修改响应、记录日志等。该阶段的插件可通过参数控制当前一个插件中断时,是否仍然执行。
各阶段的插件按配置的顺序依次执行,可被中断。
中断处理:
- 请求阶段中断:转发到特殊的API端点,执行响应,此时,后置阶段的插件仍会执行
- 响应阶段中断:返回错误响应。由于日志拦截是在最后一步执行,所以,返回错误响应后,日志仍然能被记录。
路由插件
对特定路由生效。
路由插件和全局插件实现方式相同,仅执行时机不同。
使用方式
// 示例插件
use plugin_version;
;
// 导出插件
export!;