我一直在使用Jersey进行REST Web服务工作几天,并设法使所有的CRUD操作工作,有几种交换格式:XML,JSON,Google Protobuf。 不过,我正面临一些与自动生成的WADL和XSD有关的问题。 上下文 为了定义以这三种格式交换的对象,我遵循了“合同优先”的方法 : 从我写的XSD中,我使用JAXB生成了我的模型类; 从我写的一个等价的原始文件中,我生成了Google Protobuf类(并且在内部有一种将这些类转换为JAXB生成的对象的方法,以便拥有一个独特的模型)。 但是,因为我希望我的用户也能够生成他们的类 ,所以我想共享这些模式文件(.xsd和.proto),并将它们与自动生成的WADL很好地集成在一起 。 为此,感谢这个 wiki页面: 我已经暴露了两个文件下 /schema/schema.xsd /schema/schema.proto 我已经添加了一个应用程序语法文件: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <grammars xmlns="http://wadl.dev.java.net/2009/02" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xi="http://www.w3.org/1999/XML/xinclude"> <include href="../schema/schema.xsd" /> </grammars> 我已经添加了一个定制的WADL生成器: public class RichWadlGeneratorConfig extends WadlGeneratorConfig { @Override public List<WadlGeneratorDescription> configure() { return generator(WadlGeneratorApplicationDoc.class) .prop("applicationDocsStream", "application-doc.xml") .generator(WadlGeneratorGrammarsSupport.class) .prop("grammarsStream", "application-grammars.xml") .descriptions(); } } 这样下面出现在WADL中,当我打到/rest/application.wadl : […]
为了描述RESTful,我们可以说每个资源都有自己的URI。 使用HTTP GET,POST,PUT和DELETE,我们可以对这些资源进行操作。 所有资源都是代表性的。 谁想要使用我们的资源可以通过浏览器或REST客户端来完成。 这是RESTful架构的主要思想。 这种架构允许在互联网上的服务。 那么为什么这个架构需要WADL呢? WADL提供的标准HTTP不是什么? 为什么WADL需要存在?