2013-10-26 39 views
2

REST式Web服務(例如,在JAX-RS實現中)是否支持合同優先(自上而下)方法和合同最後(自下而上)方法?RESTful Web服務是否支持合同優先和最後合同?

+0

請更多具體。這些方法的結果在JAX-RS應用程序中如何? – 2013-10-26 13:30:56

+0

如果這兩種方法都由soap(JAX-WS)支持,而不是爲什麼不是RESTful? –

+0

我知道寧靜的支持合同,但是它支持合同優先嗎?如果不是,那麼? Bcos合同 - 首先給予今天的業務非常需要的整體管理 –

回答

3

REST風格的Web服務是否支持合同優先和合同最後方法?

這取決於你使用的工具/框架。

你在說什麼適用於SOAP Web服務及其附帶的WSDL。

WSDL描述了Web服務期望作爲輸入的內容以及客戶期望輸出的內容。它定義了爲了雙方相互溝通而要遵循的合同。您可以通過執行contract-first or contract-last來獲得WSDL,您可以稍後使用此WSDL爲客戶端存根或服務框架生成代碼。

但是做REST和做SOAP不一樣。僅僅因爲我們熟悉它們,對SOAP(協議)起作用的進程不一定適用於REST(體系結構樣式)。

與公開方法和方法簽名的SOAP不同,REST公開資源。在交換這些資源時使用的媒體類型的理解是REST客戶端爲了與REST Web服務進行通信所需要的。不需要單獨的文檔來描述資源。

由於HATEOAS原則,REST客戶端更具動態性,可以適應其他使用相同媒體類型進行通信的服務。公開靜態服務描述文檔將會限制REST服務。

話雖如此,有REST工具確實暴露了描述文件,例如Jersey who exposes a WADL(contract-last)。我相信你可以使用已發佈的WADL來構建客戶端存根,而我沒有看到你無法手動編寫WADL(合同優先)並將其用於生成存根和框架的原因。但正如我所說,這可能不是REST的最佳解決方案。

這裏是如果合同最後還是契約優先的方法在REST意義,你可能需要閱讀方面形成意見的一些帖子:

+0

好的,但是,請給我任何工具/框架的名稱,通過它我可以使用契約優先方法實現RESTful Web服務。我不認爲RESTful支持合同第一無論如何!感謝您的回覆 –

+0

@Siraj Chaudhary:我知道的唯一工具(不知道他們有多穩定或有多少功能,因爲我只知道他們,我沒有真正使用它們)是[WADL2Java](https://wadl.java.net/)[我認爲是CXF使用的](http://cxf.apache.org/docs/jaxrs-services- description.html#JAXRSServicesDescription-WADLfirstDevelopment)以及一個名爲[rest-api-code-gen](http://code.google.com/p/rest-api-code-gen/)的更通用的工具。 – Bogdan

+0

該信息很有用。這意味着我們可以使用RESTful編寫合同優先的Web服務。謝謝@Bogdan –