從 1.1.x 開始,Micronaut 通過專用的 @Version 注解支持 API 版本控制。
以下示例演示了如何對 API 進行版本控制:
對 API 進行版本控制
Java | Groovy | Kotlin |
|
|
|
helloV1 方法聲明為版本 1
helloV2 方法聲明為版本 2
然后通過在配置文件(例如 application.yml)中將 micronaut.router.versioning.enabled 設置為 true 來啟用版本控制:
啟用版本控制
Properties | Yaml | Toml | Groovy | Hocon | JSON |
|
|
|
|
|
|
默認情況下,Micronaut 有兩種基于名為 X-API-VERSION 的 HTTP 標頭或名為 api-version 的請求參數(shù)來解析版本的策略,但這是可配置的。完整的配置示例如下所示:
配置版本控制
Properties | Yaml | Toml | Groovy | Hocon | JSON |
|
|
|
|
|
|
此示例啟用版本控制
parameter.enabled 啟用或禁用基于參數(shù)的版本控制
parameter.names 將參數(shù)名稱指定為逗號分隔的列表
header.enabled 啟用或禁用基于標頭的版本控制
header.names 將標題名稱指定為列表
如果這還不夠,您還可以實現(xiàn)接收 HttpRequest 的 RequestVersionResolver 接口,并可以實現(xiàn)您選擇的任何策略。
可以通過配置提供默認版本。
配置默認版本
Properties | Yaml | Toml | Groovy | Hocon | JSON |
|
|
|
|
|
|
此示例啟用版本控制并設置默認版本
如果滿足以下條件,則路由不匹配:
配置默認版本
請求中找不到版本
路由定義了一個版本
路由版本與默認版本不匹配
如果傳入請求指定了版本,則默認版本無效。
版本控制客戶端請求
Micronaut 的聲明式 HTTP 客戶端還支持通過 @Version 注釋對傳出請求進行自動版本控制。
默認情況下,如果您使用 @Version 注釋客戶端接口,則提供給注釋的值將使用 X-API-VERSION 標頭包含在內(nèi)。
例如:
Java | Groovy | Kotlin |
|
|
|
@Version 注釋可以在類型級別使用來指定要用于所有方法的版本
在方法級別定義時,它僅用于該方法
可以使用 DefaultClientVersioningConfiguration 配置每次調(diào)用發(fā)送版本的默認行為:
屬性 | 類型 | 描述 |
---|---|---|
|
java.util.List |
請求標頭名稱列表。 |
|
java.util.List |
請求查詢參數(shù)名稱列表。 |
例如使用 Accept-Version 作為標頭名稱:
配置客戶端版本控制
Properties | Yaml | Toml | Groovy | Hocon | JSON |
|
|
|
|
|
|
默認鍵是指默認配置。您可以使用傳遞給@Client 的值(通常是服務 ID)來指定特定于客戶端的配置。例如:
配置版本控制
Properties | Yaml | Toml | Groovy | Hocon | JSON |
|
|
|
|
|
|
上面使用了一個名為 greeting-service 的鍵,它可以用來配置一個用@Client('greeting-service') 注釋的客戶端。
更多建議: