使用Swagger进行说明 - 使用泛型时无法生成文档资源模型

时间:2014-09-12 18:28:08

标签: java jax-rs swagger enunciate

我面临的问题与该主题中描述的问题类似:

Can Enunciate generate docs for an API that handles generic types?

我正在使用启用spring和swagger模块的enunciate 1.28。

所以考虑一个抽象的资源类,如:

public abstract class AbstractResource<T> {

    @Autowired
    private SomeService<T> service;

    @Path("/{id}")
    @GET
    public T get(@PathParam("id") String id) {
        return service.get(id);
    }

    @POST
    public Response post(T entity) {
        return service.post(entity);
    }
}

和一个具体实施:

@Path("/authors")
public class AuthorResource extends AbstractResource<Author> { }
  1. 对于GET和POST方法,不使用适当的“作者”数据模型生成通知文档。
  2. 对于GET,我有:

    Response Body element:  (custom)`
    

    和POST:

    Request Body element: entity`
    
    1. 对于Swagger,作者模型未显示为GET的JSON模型为“responseClass”,而POST为主体“dataType”。相反,我得到两个字符串。
    2. 但是,作者模型列在swagger / ui目录中生成的AuthorResource.json中。 responseClass和dataType字段只是缺少模型的链接。

      手动更换:

      "responseClass" : "string"` by `"responseClass" : "ns0_Author" (GET)
      "dataType" : "string"` by `"dataType" : "ns0_Author" (POST)
      

      诀窍。

      注意:我确认在我这一边作者用@XmlRootElement注释,而Author类包含在<api-import pattern="com.my.package.**"/>中,它位于类路径的jar文件中。

      在这种情况下如何调整Enunciate / Swagger文档生成的任何想法?

      由于

1 个答案:

答案 0 :(得分:0)

闻起来像个臭虫。跟踪它here