2010-12-17 35 views
3

這實際上是一個設計問題。 我想知道是否Spring3.0 REST Web服務攜帶JSON有效載荷提供了類似於遵循合同優先設計的傳統Web服務的某種數據合同。 我知道JSON的架構類似於XSD,但它在春天適合哪裏? 背景: 我認爲使用json作爲客戶端服務器體系結構項目的有效負載,其中客戶端是基於.NET的應用程序,數據協定應該提供處理多個客戶端版本的方法。客戶端應該能夠將數據結構發佈到服務器。 或者,也許我應該採取一種無模式的方法,並使用類似於XmlAnyElement的「簡單數據綁定」?應該JSON RESTful Web服務使用數據合同

回答

5

具有「常規」網絡服務的「合同」在WSDL文件(包括XSD)中定義。使用RESTful服務時,這些文件被稱爲WADL。而spring-mvc不支持生成WADL。 (JAX-RS實現有)。

但即使如此,RESTful服務也被認爲更「動態」,並且不需要像那樣修復。例如,看看Facebook和Twitter的REST API。他們不提供WADL或JSON模式。他們提供一些自由形式的服務文件。這應該足夠了。

+1

謝謝。情況確實如此。似乎任何使用REST的人都會跳過架構階段。我仍在尋找對這種新的無契約設計的深入解釋。 – ApriOri 2010-12-19 17:49:37

+0

Bozho,你能否在這裏解釋一下你的意思是「動態」 - 「REST風格的服務被認爲更加'動態',並且不需要像那樣修復」。另外,爲什麼Facebook和Twitter不提供JSON模式/合同?如果他們對json響應進行重大更改,api用戶的代碼是不會中斷的? – testerjoe2 2017-02-11 02:28:46

5

如果應該啓用客戶端模擬客戶端(實際上他們應該)的單元測試服務,服務應提供合同。自由格式文檔不是測試的可靠基礎,因爲它留下了誤解的空間,而合同卻沒有。

1

JSON Schema和Hyper-Schema是用於指定內容和內容協商的JSON Schema格式。

我一直致力於HATEOAS(超媒體作爲應用程序狀態的引擎)API,使用JSON超架構。 您可以轉到下面的URL,瀏覽,註冊,登錄並執行一些操作。

檢查出來,在這裏: http://direct.psprt.com:8081/

我也開源了我實際的API代碼迄今: http://bpanahij.github.io/passportedu_schema/

隨意看看,借用和評論。

此外,請查看JavaScript JSON-Hyper-Schema客戶端。它通過使用OPTIONS方法解析在給定資源端點提供的Schema來動態構建使用Angular的HTML客戶端應用程序。

https://github.com/bpanahij/passportedu_schema/tree/master/client

+0

似乎很有趣,但鏈接已損壞 – eliocs 2017-04-18 12:54:29