我正在将Swagger添加到现有项目中以生成文档。它主要是很好用,但是有一些边缘情况产生了一些奇怪的文档,我想知道是否有办法处理它们。
一种Web方法将对泛型类型进行操作,如下所示:
public abstract class AbstractServiceClass<T>
{
@ApiOperation(value="blah blah",tags={ "Generic methods"})
@Path("/doGenericThing")
@POST
@Consumes({ "application/xml", "application/json" })
@Produces({ "application/xml", "application/json" })
public T doGenericThing(@ApiParam T entity)
{
//...
}
}
@Api(value="/a.b.c")
@Path("a.b.c")
public class ConcreteService extends AbstractServiceClass<SomeEntityType>{
//...
}
当swagger为ConcreteService
生成文档时,它会为方法doGenericThing
生成文档,但无法确定参数类型为SomeEntityType
。有没有办法告诉Swagger在生成具体服务类的文档时继承方法的参数类型?
我有类似的情况,他的泛型方法只适用于某些实体。这些实体具有应用于它们的自定义注释,并且代码能够确定给定输入是否是它可以处理的内容。有没有办法告诉swagger不为标记为@Api
的某些服务类中的继承方法生成方法文档?
我对Swagger很陌生,我不确定它是否能够处理这些情况。我愿意添加映射文件,甚至扩展API(如果有合理的文档化方法)来添加此自定义功能。重写这些类,以便Swagger更容易消化,这可能不是一个好的选择。
答案 0 :(得分:0)
我建议在https://github.com/swagger-api/swagger-core/issues上打开一个问题来跟踪此问题。由于类型擦除肯定存在一些限制,这些限制是在运行时读取实现无法克服的。