【发布时间】:2011-09-04 08:15:30
【问题描述】:
我正在使用 JAX-RS 创建一些服务,这些服务需要将任意复杂的对象作为参数,而不仅仅是整数和字符串等原语。 A discussion on the CXF mailing list 表示在这种情况下只使用包装器对象作为单个参数。
我关心的是如何记录服务的输入格式?如果创建如下所示的服务:
@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 克隆。)
【问题讨论】:
-
该模式是为了帮助开发人员找出发送和返回的内容,不一定要验证机器的输出。所以这适用于 xml 而不是 json 对我来说并不重要。