3

我想创建一个 WADL 文件,可以使用 Apache CXF wadl2javaMaven 插件从中创建 Java 接口。在 WADL 中,我想使用 XSD 文件中定义的数据类型。

这些是我的 REST 服务:

@Path("/v1/order")
public interface OrderResource {

@PUT
@Consumes(MediaType.APPLICATION_XML)
public Response createOrder(Order order);

@GET
@Produces(MediaType.APPLICATION_XML)
public List<Order> getOrders(@QueryParam("orderId") List<Long> orderIds);
}

我的 WADL:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02" >
    <grammars>
        <include href="RestService_schema1.xsd" />
    </grammars>
    <resources base="http://localhost:9080/rest/">
        <resource path="v1/order/" id="OrderResource">
            <resource>
                <method name="PUT" id="createOrder">
                    <request>
                        <representation mediaType="application/xml"  />
                    </request>
                    <response status="200">
                    </response>
                </method>
            </resource>
        </resource>
            <resource>
                <method name="GET" id="getOrders">
                    <request>
                        <param name="orderId" style="query" type="xs:long" />
                    </request>
                    <response status="200">
                        <representation mediaType="application/xml" />
                    </response>
                </method>
        </resource>   
    </resources>
</application>

我的 RestService_schema1.xsd:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="Order" type="Order" />
    <xs:complexType name="Order">
        <xs:attribute name="OrderId" type="orderid">
            <xs:annotation>
                <xs:documentation>...
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:sequence>
        .
        .
        .
        .
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="orderid">
        <xs:annotation>
            <xs:documentation> ....
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:long" />
    </xs:simpleType>
</xs:schema>

我想做的事:

  • 我想在我的 WADL 中为 createOrder 服务指定输入类型 Order。我知道这可以通过元素属性来完成,但我该如何链接呢?也许element="Order"<representation>-Tag 内?

  • getOrders()-Service 的查询参数应该是List<Long>(在 WADL 中是带有 orderid 的列表)和响应类型List<Order>。如何在 WADL 中指定它?

4

0 回答 0