1. 程式人生 > 其它 >企業級微服務API閘道器Fizz-如何自定義外掛

企業級微服務API閘道器Fizz-如何自定義外掛

概念

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