我已经读过wadl2java代码生成器和cxf-wadl2java-plugin Maven插件“可用于生成服务器和客户端JAX-RS代码......”但是,除了GET请求之外,生成的代码似乎没用。< / p>
例如,如果我使用以下WADL文件:
case SET_ARTICLE_DATA:
return {
...state, // clone existing articles
[action.id]: { // replace article with id === `action.id` with received data
...state[action.id], // not needed if `action.data` has everything u need
...action.data,
isFetching: false, // can use object destructuring on `state[action.id]` to remove this key too
}
}
这是一个架构:
<?xml version="1.0" encoding="UTF-8"?>
<application
xmlns="http://wadl.dev.java.net/2009/02"
xmlns:ns="http://superbooks">
<grammars>
<include
href="book.xsd"/>
</grammars>
<resources
base="http://localhost:8080/">
<resource
path="/bookstore/put"
id="poster">
<method
name="POST"
id="postBook">
<request>
<representation
mediaType="application/xml"
element="ns:Book"/>
</request>
<response>
<representation
mediaType="*/*"/>
</response>
</method>
</resource>
</resources>
</application>
生成的代码如下所示:
<?xml version="1.0"?>
<xs:schema
id="bookschema"
targetNamespace="bookschema"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ns="bookschema"
>
<xs:complexType name="Book">
<xs:sequence>
<xs:element name="id" type="xs:integer"/>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="Book" type="ns:Book"/>
</xs:schema>
我原本希望这个方法看起来更像这样:
/**
* Created by Apache CXF WadlToJava code generator
**/
package com.cxf.test;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
@Path("/bookstore/put")
public interface Poster {
@POST
@Consumes("application/xml")
@Produces("*/*")
Response postBook();
}
如何使用不带参数的POST方法?
最终,我希望接收JSON而不是XML,但我认为首先应该获得XML,这是CXF的正常用例,正在运行。
我怀疑这与绑定文件有关,但我找不到任何关于如何具体的内容。
答案 0 :(得分:1)
WADL对Book元素使用XML名称空间http://superbooks
,而XML模式使用bookschema
。我认为这是一个错误。因此,请确保它们匹配,以便生成一代。