我正在使用JAX-RS创建一些服务,这些服务需要将任意复杂的对象作为参数,而不仅仅是像整数和字符串这样的基本体。 A discussion on the CXF mailing list表示在这种情况下仅使用包装对象作为单个参数。创建XSD并将其链接到WADL
我的担心是如何记录服务的输入格式?如果创建一个看起来像下面这样的服务:
@POST
@Produces("application/json")
@Consumes("application/json")
@Path("oneParam")
public ComplexObject2 myServiceMethod(ComplexObject1 obj) {
Foo f = obj.foo
Bar b = obj.bar
...
}
自动生成WADL是CXF生产只会产生如下:
<resource path="/oneParam">
<method name="POST">
<request>
<representation mediaType="application/json"/>
</request>
<response>
<representation mediaType="application/json"/>
</response>
</method>
</resource>
这其中包含请求或响应实际上什么都没信息包含的内容。 CXF邮件列表中的Sergey表示可以将模式链接到该表示,但我该怎么做呢?我如何创建XSD?
(PS对于幂等资源使用POST可能不是RESTful,但这里并不重要,因为我们本质上是使用Json来执行RPC,这或多或少是现有基于SOAP的api的1:1克隆。)
该模式旨在帮助开发人员找出发送和返回的内容,而不一定要验证计算机的输出。所以这适用于XML,而不是JSON对我来说并不重要。 – oligofren 2011-06-27 15:44:42