Class AlmanacClient
java.lang.Object
io.leandev.appfuse.almanac.AlmanacClient
- All Implemented Interfaces:
AutoCloseable
almanac 服務的低階 HTTP 客戶端
封裝 StandardHttpClient,負責組裝 almanac 的 REST 端點 URL、套用認證
(AlmanacCredentials)、發送 GET 請求並將 JSON 回應反序列化為物件 / 物件清單。
almanac 的端點皆位於 {baseUrl}/api/v1 之下;baseUrl 預設指向正式環境
(DEFAULT_BASE_URL),可於建構時覆寫(如指向測試或其他環境)。
高階的領域服務(CalendarService / LocationService / AddressService)透過本類別 取得資料,並各自負責快取。
- Since:
- 4.0
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionAlmanacClient(AlmanacCredentials credentials) 以預設 base URL 建立AlmanacClient(String baseUrl, AlmanacCredentials credentials) 以指定 base URL 建立AlmanacClient(String baseUrl, AlmanacCredentials credentials, int retries, StandardHttpClient httpClient) 完整建構(供進階使用 / 測試注入自訂 HTTP 客戶端) -
Method Summary
-
Field Details
-
DEFAULT_BASE_URL
almanac 正式環境 base URL
正式環境經反向代理以 root context 對外服務(context-path 已被 strip),故 base URL 為網域本身、端點直接位於
/api/v1之下。- See Also:
-
API_PREFIX
-
-
Constructor Details
-
AlmanacClient
以預設 base URL 建立- Parameters:
credentials- 認證策略(可為 null 表示不帶認證)
-
AlmanacClient
以指定 base URL 建立- Parameters:
baseUrl- almanac base URL(含 context-path,如https://almanac.leandev.io/almanac-server)credentials- 認證策略(可為 null 表示不帶認證)
-
AlmanacClient
public AlmanacClient(String baseUrl, AlmanacCredentials credentials, int retries, StandardHttpClient httpClient) 完整建構(供進階使用 / 測試注入自訂 HTTP 客戶端)- Parameters:
baseUrl- almanac base URLcredentials- 認證策略retries- 重試次數httpClient- 底層 HTTP 客戶端(由本類別於close()時關閉)
-
-
Method Details
-
getList
GET 端點並反序列化為物件清單- Type Parameters:
R- 清單元素型別- Parameters:
path- 相對於{baseUrl}/api/v1的路徑(以/開頭)type- 清單元素型別- Returns:
- 反序列化後的清單
- Throws:
AlmanacException- 連線或解析失敗時
-
get
GET 端點並反序列化為單一物件- Type Parameters:
R- 目標型別- Parameters:
path- 相對於{baseUrl}/api/v1的路徑(以/開頭)type- 目標型別- Returns:
- 反序列化後的物件
- Throws:
AlmanacException- 連線或解析失敗時
-
close
- Specified by:
closein interfaceAutoCloseable- Throws:
Exception
-