Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services JSON RESTful web服务应该使用数据契约吗_Web Services_Json_Rest_Spring Mvc_Design By Contract - Fatal编程技术网

Web services JSON RESTful web服务应该使用数据契约吗

Web services JSON RESTful web服务应该使用数据契约吗,web-services,json,rest,spring-mvc,design-by-contract,Web Services,Json,Rest,Spring Mvc,Design By Contract,这实际上是一个设计问题。 我想知道,携带JSON负载的Spring3.0RESTWeb服务是否提供了某种类似于传统web服务的数据契约(遵循契约优先设计)。 我知道JSON的模式类似于XSD,但它在spring中的适用性如何? 背景: 我认为将JSON用作客户端-服务器体系结构项目的有效载荷,其中客户端是.NET的应用程序,而数据契约应该提供一种处理客户端多个版本的方法。客户端应该能够将数据结构发布到服务器。 或者我应该采取无模式的方法,使用类似于XmlAnyElement的“简单数据绑定”?与

这实际上是一个设计问题。 我想知道,携带JSON负载的Spring3.0RESTWeb服务是否提供了某种类似于传统web服务的数据契约(遵循契约优先设计)。 我知道JSON的模式类似于XSD,但它在spring中的适用性如何? 背景: 我认为将JSON用作客户端-服务器体系结构项目的有效载荷,其中客户端是.NET的应用程序,而数据契约应该提供一种处理客户端多个版本的方法。客户端应该能够将数据结构发布到服务器。 或者我应该采取无模式的方法,使用类似于XmlAnyElement的“简单数据绑定”?

与“常规”web服务的“契约”是在WSDL文件(包括XSD)中定义的。使用RESTful服务,这些文件被调用。SpringMVC不支持生成WADL。(JAX-RS实现已经完成)


但即使这样,RESTful服务也被认为是更“动态”的,并且它们不需要像这样固定。例如,看看Facebook和twitter的RESTAPI。它们不提供WADL或JSON模式。他们提供一些免费的服务文档。这应该足够了。

如果应该允许客户机模拟服务来对客户机进行单元测试(实际上他们应该这样做),那么服务应该提供一个契约。自由格式文档不是测试的可靠基础,因为它会留下误解的空间,而契约则不会。JSON模式和Hyper模式是用于指定内容和内容协商的JSON模式格式

我一直在使用JSON超模式开发HATEOAS(作为应用程序状态引擎的超媒体)API。 您可以转到下面的URL,浏览、注册、登录并执行一些操作

请在这里查看:

到目前为止,我还公开了我的实际API代码:

请随意查看、借用和评论

另外,请查看Javascript JSON超模式客户端。它通过使用OPTIONS方法解析给定资源端点处提供的模式,使用Angular动态构建HTML客户端应用程序


谢谢。事实就是这样。似乎任何使用REST的人都跳过了模式阶段。我仍然在寻找新的无合同设计的一些深入解释。Bozho,你能解释一下你这里所说的“动态”是什么意思吗?“RESTful服务被认为是更“动态”的,它们不需要像那样固定”。另外,为什么Facebook和twitter不提供json模式/契约?如果api用户对json响应进行重大更改,他们的代码不会中断吗?看起来很有趣,但链接中断了