簡體   English   中英

如何在 Java 中使用 Restful Web 服務(Restful API)

[英]how to consume a Restful Web Service (Restful API) in Java

我只想知道該過程的高級步驟。 這是我對這個過程的想法:

假設:API 返回 JSON 格式

  1. 查看API文檔,查看返回的JSON結構
  2. 創建相應的 Java 類(例如:Employee)
  3. 對端點進行 Http 調用以獲取 JSON 響應
  4. 使用一些 JSON 庫(例如 GSON、Jackson)將 JSON 字符串解組為 Employee 對象。
  5. 操作 Employee 對象

但是,如果 API 返回的 JSON 發生了變化怎么辦? 時不時的檢查一下JSON字符串,調整對應的Java類,真的很繁瑣。

任何人都可以幫助我解決這個問題。 謝謝

您描述了如何通過 http API 使用json ,這很好,因為大多數 API 就是這樣。 但是,如果您有興趣使用 Restful HTTP 資源,一種方法是:

  1. 檢查 API 文檔,又名。 您的客戶端需要支持的media-types才能與其資源進行通信。 一些 RESTafarians 認為所有media-types都應該標准化,因此所有客戶端都可能支持它們,但我認為這有點遠。

    注意鏈接表示和處理邏輯。 media-types不僅描述了數據的格式,還描述了如何處理它們。 如果是圖像,如何顯示它,如何運行可能是消息一部分的代碼,如何在屏幕上布局,如何使用嵌入式控件(如表單等)。

  2. 創建相應的 Java 類。 如果資源“僅”描述數據(它們通常在 API 上下文中描述),那么簡單的 Java 類就可以完成,否則可能需要更多。 例如:表示可以包含在客戶端上運行的 JavaScript 嗎? 您需要嵌入一個 JavaScript 引擎,並准備好您的類來做到這一點。

  3. 如果有,請調用帶有書簽的 URI。 您不應該調用類似 SOAP 的硬編碼“端點”。 您從書簽開始,然后按照您的客戶需要的狀態工作。

    通常,您的第一個調用會轉到“開始”資源。 這是您在開始時唯一的書簽。 您可以在Accept標頭中指定對此資源支持的media-types

  4. 然后您檢查返回的Content-Type是否與您接受的media-types之一匹配(請記住,服務器可以隨意忽略您的首選項),然后您根據其規則處理返回的表示。

    例如,您想要獲取您還沒有書簽的客戶123456所有帳戶。 您可能首先GET用於帳戶管理的啟動資源。 那里的處理邏輯可能會描述一個鏈接到帳戶列表。 你按照鏈接。 那里的表示可能會給您一個“表格”,您必須在其中填寫客戶編號和POST 最后,您將獲得帳戶列表的表示。 此時您可以為頁面添加書簽,這樣下次您就不必遍歷整個鏈。

  5. 過程表示。 這可能涉及顯示、運行或只是將數據移交給其他類。

抱歉,這篇文章很長,一天工作很慢:) 只是為了完整性,客戶需要了解其他一些要點:緩存、處理書簽(對 3xx 代碼做出反應)、遵循表示中的鏈接。

版本控制是您提到的另一個主題。 這是對自身的全面討論,但簡而言之:有些人(包括我自己)主張對media-type版本控制。 非向后兼容更改只需更改媒體類型的名稱(例如從application/vnd.company.customer-v1+jsonapplication/vnd.company.customer-v2+json ),然后一切(例如書簽)繼續因為內容協商而工作。

有很多方法可以使用 RESTful API。

通常,您需要知道要使用的 API 版本。 當 API 發生變化時(即暴露了不同的版本),您需要決定新功能是否值得將您的應用程序遷移到最新和最好的...

根據我的經驗,遷移到新 API 總是需要付出一些努力,這實際上取決於這樣做的價值(與不這樣做相比)和/或舊 API 是否會被棄用和/或發布者不支持.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM