通过Iterable和泛型来阐述docs问题

时间:2013-02-20 23:15:50

标签: generics documentation iterable enunciate

我正在尝试使用enunciate为我的基于Jersey的REST API重新生成文档。打几个绊脚石:

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

Enunciate似乎无法插入Iterable。在我的文档中,我只得到“元素:(自定义)”。请注意,Project类型使用@XmlRootElement和@JsonRootType注释。

同样,对于此代码:

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

我为方法参数(注意:T有扩展限制)以及返回类型(其中Response为:javax.ws.rs.core.Response)获取“element:(custom)”。此外,enunciate似乎无法弄清楚返回的媒体类型:它列出了XML,JSON和*(想到它,我不确定我到底想要什么,但我知道它不是那个。)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

因此,如果您想要了解返回类型,可以创建一个Enunciate可以识别并返回而不是Iterable的包装bean,例如:

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