我想创建一个 WADL 文件,可以使用 Apache CXF wadl2java
Maven 插件从中创建 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 中指定它?