我正在使用 JAX-RS 创建一些服务,这些服务需要将任意复杂的对象作为参数,而不仅仅是整数和字符串等原语。CXF 邮件列表上的讨论说在这种情况下只使用包装器对象作为单个参数。
我关心的是如何记录服务的输入格式?如果创建如下所示的服务:
@POST
@Produces("application/json")
@Consumes("application/json")
@Path("oneParam")
public ComplexObject2 myServiceMethod(ComplexObject1 obj) {
Foo f = obj.foo
Bar b = obj.bar
...
}
CXF 生成的自动生成的 WADL 只会生成以下内容:
<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 克隆。)