首页 > 解决方案 > 如何识别生成的 swagger 文档中为什么有不需要的类型。如何防止它?

问题描述

对于我们的项目,我们使用 swagger.version->1.5.16 和 swagger-maven-plugin (3.1.5) 为我们的公共 REST API 生成 swagger 文档(用 java + swagger 注释编写)

问题是在生成的文档中列出了与公共 API 无关的类型 - 没有 API 方法将这些用作参数,也没有用作返回类型。

为什么会发生这种情况,我们该如何预防?(生成 swagger 文档时是否有任何调试日志以帮助确定原因?)

提前致谢!

例子:

public class Vehicle {

     public StrangeObject strangeMethod() {
          return null;
     }

     public class StrangeObject<T> {}
}

和自行车:

import javax.ws.rs.DELETE;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;

@Path("/bikes")
@Api
public class Bike extends Vehicle {
     @DELETE
     @Path("/book")
     @Produces({ "application/json" })
     @ApiOperation(nickname = "bookBike",
                value = "Book a Bike",
                code = 200,
                response = Boolean.class)
     @ApiResponses(
                value = {
                          @ApiResponse(code = 403, message = "Forbidden"),
                          @ApiResponse(code = 404, message = "Not Found")
                })
     public Boolean handleBook(
                @PathParam("id") @ApiParam(value = "The ID of the bike.") String id) {
          return Boolean.TRUE;
     }
}

StrangeObject 出现在 Definitions swagger 文档中,这就是我想要修复的。 注意:假设我无权访问 Vehicle,它来自外部库。

标签: javaswagger

解决方案


推荐阅读