概念 fizz 插件可理解为响应式的 http servlet filter,即能拦截请求作处理,也能对响应作调整。 插件可作用于路由,即匹配路由的所有请求;或网关分组,即一组路由。 插件开发分网关和
fizz 插件可理解为响应式的 http servlet filter,即能拦截请求作处理,也能对响应作调整。
插件可作用于路由,即匹配路由的所有请求;或网关分组,即一组路由。
插件开发分网关和管理后台两部分,网关部分定义插件及执行逻辑,管理后台定义插件的配置。
下面以简单的登录校验为例,即客户端通过请求头 token 传递登录态,插件校验登录态,介绍插件的开发。
网关开发实现 FizzPluginFilter.java 即定义了一个插件,本例插件实现:
@Component(LoginValidationPlugin.ID) // 必配,用于与管理后台的配置关联等
public class LoginValidationPlugin implements FizzPluginFilter {
public static final String ID = "LoginValidationPlugin";
@Override
public Mono<Void> filter(ServerWebExchange exchange, Map<String, Object> config) {
String token = exchange.getRequest().getHeaders().getFirst("token");
if (token.equals("合法")) {
Mono<Void> next = FizzPluginFilterChain.next(exchange); // 执行后续插件或业务逻辑
return next.thenReturn(ReactorUtils.Void).flatMap(
v -> {
// here, do something after next
return Mono.empty();
}
);
} else {
return WebUtils.response(exchange, HttpStatus.FORBIDDEN, null, "非法 token");
}
}
}
管理后台配置
插件配置
保存后:
路由配置编辑要应用插件的路由:
添加后:
保存后,凡是匹配路由的请求,均会被插件拦截。
Fizz网关介绍Fizz Gateway 是一个基于 Java开发的微服务聚合网关,能够实现热服务编排聚合、自动授权选择、线上服务脚本编码、在线测试、高性能路由、API审核管理、回调管理等目的,拥有强大的自定义插件系统可以自行扩展,并且提供友好的图形化配置界面,能够快速帮助企业进行API服务治理、减少中间层胶水代码以及降低编码投入、提高 API 服务的稳定性和安全性。
官网:https://www.fizzgate.com
GitHub:https://github.com/wehotel/fizz-gateway-community
码云:https://gitee.com/fizzgate/fizz-gateway
入门教程:https://www.fizzgate.com/fizz/guide/GettingStarted/
进阶教程:https://www.fizzgate.com/fizz/guide/advanced/