企業級微服務API閘道器Fizz-如何自定義外掛
阿新 • • 發佈:2022-05-17
概念
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 服務的穩定性和安全性。
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