Class AbstractHttpMessageParser<T>

java.lang.Object
io.leandev.appfuse.http.AbstractHttpMessageParser<T>
Type Parameters:
T - HTTP 訊息類型 (ClassicHttpRequest 或 ClassicHttpResponse)
Direct Known Subclasses:
HttpRequestParser, HttpResponseParser

public abstract class AbstractHttpMessageParser<T> extends Object

HTTP 訊息解析器的抽象基類

提供共同的解析邏輯,支援 JSON、XML 和純文字格式。 子類別只需要實作取得 HttpEntity 的方法即可。

  • Field Details

    • objectMapper

      protected final tools.jackson.databind.ObjectMapper objectMapper
      用於 JSON 序列化/反序列化的 ObjectMapper 實例
  • Constructor Details

    • AbstractHttpMessageParser

      public AbstractHttpMessageParser()
  • Method Details

    • getEntity

      protected abstract org.apache.hc.core5.http.HttpEntity getEntity(T message)
      從 HTTP 訊息中取得 HttpEntity
      Parameters:
      message - HTTP 訊息(request 或 response)
      Returns:
      HttpEntity 實例
    • read

      public <R> R read(T message, Class<R> type)
      讀取並解析為指定類型的物件
      Type Parameters:
      R - 回傳物件的類型
      Parameters:
      message - HTTP 訊息
      type - 目標類型
      Returns:
      解析後的物件
      Throws:
      NotFoundException - 如果 payload 為空
      HttpClientException - 如果解析失敗
    • readAsList

      public <R> List<R> readAsList(T message, Class<R> type)
      讀取並解析為指定類型的物件列表
      Type Parameters:
      R - 列表元素的類型
      Parameters:
      message - HTTP 訊息
      type - 列表元素類型
      Returns:
      解析後的物件列表
      Throws:
      HttpClientException - 如果解析失敗
    • readAsDocument

      public Document readAsDocument(T message)
      讀取並解析為 XML Document
      Parameters:
      message - HTTP 訊息
      Returns:
      XML Document
      Throws:
      HttpClientException - 如果解析失敗
    • readAsText

      public String readAsText(T message)
      讀取為純文字
      Parameters:
      message - HTTP 訊息
      Returns:
      文字內容
      Throws:
      HttpClientException - 如果讀取失敗
    • read

      protected <R> R read(String payload, Class<R> type)
      從文字解析為指定類型的物件
      Type Parameters:
      R - 回傳物件的類型
      Parameters:
      payload - JSON 文字內容
      type - 目標類型的 Class
      Returns:
      解析後的物件
      Throws:
      NotFoundException - 如果 payload 為空
      HttpClientException - 如果解析失敗
    • readAsList

      protected <R> List<R> readAsList(String payload, Class<R> type)
      從文字解析為指定類型的物件列表
      Type Parameters:
      R - 列表元素的類型
      Parameters:
      payload - JSON 文字內容
      type - 列表元素類型的 Class
      Returns:
      解析後的物件列表,如果 payload 為空則回傳空列表
      Throws:
      HttpClientException - 如果解析失敗
    • readAsDocument

      protected Document readAsDocument(String text)
      從文字解析為 XML Document
      Parameters:
      text - XML 文字內容
      Returns:
      解析後的 XML Document
      Throws:
      HttpClientException - 如果解析失敗