簡體   English   中英

什么是RESTDL WS中的WSDL等價物。 如果沒有,消費者如何生成所需的客戶端類?

[英]What is WSDL equivalent in restful WS . If nothing,how consumer generates required client side classes?

說,我在java網絡中有生產者,在dot網絡中有消費者。 Producer有一個方法,它將Employee作為方法參數並在db中創建employee。

對於基於SOAP的ws,dot net client將命中WSDL並創建存根(包括dot net中的員工數據表示)。 現在它可以填充對象並發送給制作人。

我不確定它在restful webservices中是如何工作的,因為沒有WSDL。 休息用戶如何知道生產者在沒有任何WSDL合同的情況下暴露的操作,以及dot net consumer將如何獲得存根(如員工數據對象)以便它可以簡單地填充並發送?

我知道在休息時有WADL(與WSDL並行),但看起來不是很突出,而且現在還不是標准。

我沒有得到客戶端代碼將如何生成EmployeeData類,以便它可以填充它並發送給生產者? 客戶端是否會手動創建額外的類(而不是使用客戶端可用的實用程序在WSDL的基礎上生成的代理EmployeeData)? 即使客戶端必須手動完成,客戶端如何知道沒有wsdl或wadl的EmployeeData類的類定義是什么?

REST的一個重要概念是HATEOAS或Hypermedia作為應用程序狀態的引擎 這意味着您的客戶端通過服務提供的超媒體鏈接與REST服務進行交互。

您的REST Web服務有一個入口點,比如http://yourhost.com/rest 您的客戶端將首先將請求發送到該URL。 您的服務將使用描述部分或全部可訪問資源以及如何訪問它們的資源進行響應。 您不斷發現並關注鏈接。 這就是API的發布(和發現)的方式。

這是一個描述這個概念的精彩視頻: 超媒體API。

通過HATEOAS,您只需按照超媒體鏈接即可完全發現您的服務API。


REST中沒有自頂向下/自底向上設計的概念。

REST是關於資源的,而不是關於方法調用的,這基本上是WSDL描述的內容。

即使客戶端必須手動完成,客戶端如何知道沒有wsdl或wadl的EmployeeData類的類定義是什么?

不需要創建EmployeeData類。 假設您需要創建一個新的Employee ,您將向/employees發送一個GET請求,該請求可能會返回包含如何執行此操作的響應。 這可能是像這樣的XHTML響應(除其他外)

<form class="new-employee" action="/context/employees" method="PUT" >
    <input type="text" name="employee_name" />
    <input type="text" name="employee_age" />
    <input type="submit" name="submit" />
</form>

響應包含創建新員工時需要遵循的確切格式。 您需要使用包含這些表單參數的HTTP PUT請求將表單提交給/context/employees 這是HATEOAS。 超媒體鏈接是/context/employees 引擎通過PUT請求跟隨此鏈接。 應用程序狀態是在此請求之后,將存在新員工。

假設您正在使用基於Json的WS - 有一些工具可以幫助:

  1. 有json解析器,可以將json或json模式文件轉換為POJO類,並放入Json解析庫使用的一些注釋 - 請看這里: http//www.jsonschema2pojo.org/
  2. 我不知道任何可以根據所有API調用生成服務器存根的自動化工具,但是有一個很好的庫可以使用它 - https://github.com/square/retrofit - 你必須仍然放置補丁和方法簽名到interfase,但它更方便玩“純”java。
  3. 還有一些非常好的工具可以幫助生成和格式化WS的文檔 - 我最喜歡的是swagger: https//helloreverb.com/developers/swagger

沒有(或者至少我不知道)工具允許生成存根,數據類等,因為它通常可以通過WSDL文件完成。

暫無
暫無

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

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