我知道WSDL用於定義基於SOAP的Web服務,但是在我看到的大多數WSDL中,WSDL中還定義了RESTful「web service」-http :捆綁。如何在JAVA中爲WSDL定義的REST生成RESTful客戶端
要爲SOAP生成客戶端,我使用了JAX-WS的wsimport工具(它也爲REST生成客戶端類,但它不起作用)。
所以問題是,如何生成基於WSDL的REST客戶端?
我知道WSDL用於定義基於SOAP的Web服務,但是在我看到的大多數WSDL中,WSDL中還定義了RESTful「web service」-http :捆綁。如何在JAVA中爲WSDL定義的REST生成RESTful客戶端
要爲SOAP生成客戶端,我使用了JAX-WS的wsimport工具(它也爲REST生成客戶端類,但它不起作用)。
所以問題是,如何生成基於WSDL的REST客戶端?
我從來沒有聽說過任何人使用WSDL來生成REST客戶端。 WADL是,但不是WSDL。
無論如何,爲REST服務生成客戶端沒有任何意義。如果你認爲你想這樣做,那麼你錯過了REST的好處,並試圖遵循REST約束條件,這將使你無需付出額外的工作。
實際上,您可以爲JAX-RS自動生成一個類似於stub的SOAP,但它使用WADL,我相信它是WSDL變體。
Apache CXF does this如果這不適合你,它也會自動創建SOAP端點和SOAP客戶端。
你可以使用RestDescribe來生成和編譯WSDL,你可以使用它在php,ruby,python,java和C#中生成客戶端。它會生成乾淨的代碼,並且在代碼生成之後有一個很好的修改,你可以在工具here後面找到很好的文檔和底層思想。
wintermute上提到了幾個有趣且有用的WADL tools。
IBM Developer network: WSDL2 can describe REST services.
我認爲程序員主流是聖戰SOAP(經典) - REST服務。沒有人希望這場戰爭,這些概念可以共存 - 我認爲這不僅是來自我和少數人的意見,而且是對標準的支持。
我也曾在網上讀過WSDL不應該用於定義REST。但在許多(很多)我發現REST描述。例如: http://services.aonaware.com/DictService/DictService.asmx?WSDL http://www.webservicex.net/ValidateEmail.asmx?WSDL http://www.webservicex.com/globalweather .asmx?WSDL http://www.webservicex.net/WeatherForecast.asmx?wsdl – Milan 2010-04-22 14:24:55
這很有趣。我聽說最近的WSDL版本可以描述HTTP apis,但我從來沒有見過使用它。我個人認爲像這樣的元數據文檔對於REST系統來說是完全不必要的並且可能有害的。 – 2010-04-22 14:46:19
Darrel的答案+1。如果客戶依賴於在設計時獲得的服務描述,那麼您的系統不是RESTful。 – 2010-04-23 10:45:36