概念

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/


作者:lancer

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/ZHONG-J/p/16279580.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!