gpt4 book ai didi

json - 创建 XSD 并将其链接到 WADL

转载 作者:行者123 更新时间:2023-12-04 18:50:56 25 4
gpt4 key购买 nike

我正在使用 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?

(P.S. 对幂等资源使用 POST 可能不是 RESTful,但这里并不重要,因为我们本质上是使用 Json 进行 RPC。这或多或少是现有基于 SOAP 的 api 的 1:1 克隆。)

最佳答案

可以将 XSD 文件链接到 WADL 文件,然后在请求和响应的表示中引用 XML 元素。但是,由于它是 XML 模式,因此不适用于 JSON 表示。

要将 XSD 链接到 WADL 文件,请创建 grammars文件顶部的元素在主 resources 之前元素。

<grammars>
<include href="myapp.xsd"/>
</grammars>

然后添加对 XML 元素的引用,如下所示(使用示例的修改版本):
<resource path="/oneParam">
<method name="POST">
<request>
<representation mediaType="application/xml" element="myapp:oneParamRequest" />
</request>
<response>
<representation mediaType="application/xml" element="myapp:oneParamResponse" />
</response>
</method>
</resource>

前缀 myapp在 XSD 中定义,也可以在 WADL 文件中使用。

我不知道要配置 CXF 以自动执行此操作。我在 Jersey 方面的经验是相似的,我们使用生成的 WADL 作为以后手动编辑的起点。

关于json - 创建 XSD 并将其链接到 WADL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6168573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com