2013-02-20 32 views
0

我正在尝试使用声明来重新生成基于Jersey的REST API的文档。遇到几个绊脚石:使用Iterable和泛型声明文档问题

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public Iterable<Project> listAll() { 
    ... 
} 

声明似乎不能插入Iterable。在我的文档中,我只是得到“元素:(自定义)”。请注意,项目类型使用@XmlRootElement和@JsonRootType注释。

类似地,对于这样的代码:

@POST 
@Consumes(MediaType.APPLICATION_JSON) 
public Response save(final T persistable) { 
    ... 
} 

我得到“元素:(定制)”两者的方法参数(注:T具有一个延伸的限制),以及返回类型(其中,反应是:javax.ws.rs.core.Response)。此外,阐明似乎无法弄清楚返回的媒体类型:它列出了XML,JSON和*(想起它,我不确定我想要的是什么,但我知道不是这样)

任何想法?

回答

1

Enunciate使用JAX-RS规范来生成其文档。不幸的是,Iterable接口不是一个正式支持的JAX-RS对象类型,所以不知何故,您使用自定义消息正文编写器来将Iterable序列化为JSON(我假设它为Jackson?)。

所以,如果你想成为正式的关于您的返回类型,你可以创建一个包装的bean阐明可以识别并返回的,与其Iterable,例如:

@XmlRootElement 
public class Projects { 
    public Collection<Project> projects; 
}