嵌套对象未在Swagger文档中显示

时间:2018-11-15 02:02:56

标签: java spring-boot swagger springfox

我正在使用2.9.2版的swagger-springfox,遇到多个嵌套对象的显示不完整的问题。 我有一个名为AddEntityCaseReq的类和下面的结构。当我访问swagger-ui.html时,Properties中什么也没有。 我在每个班级都标记了@ApiModel@ApiModelProperties。缺少什么吗?

  

这是类结构

AddEntityCaseReq
├── id
└── List<UploadDocuments> uploadDocuments;
    └── Properties
          ├── id
          └── name
  

这是控制器代码

    @ResponseBody
    @RequestMapping(value = "/addEntityCase", method = RequestMethod.POST)
    @ApiOperation(value = "add entity case", notes = "add entity case")
    @ApiImplicitParam(name = "addEntityCaseReq", value = "reuqest",
            required = true, dataType = "AddEntityCaseReq")
    public CommonResp<Boolean> addEntityCase(@RequestBody AddEntityCaseReq addEntityCaseReq) {
        return addEntityCase.execute(addEntityCaseReq);
    }
  

此处有详细的模型详细信息

swagger model details here

1 个答案:

答案 0 :(得分:0)

如果openapi中具有类层次结构,则可能会在swagger ui中仅看到基类。您可以做的是在配置中强制为更丰富的子类的基类进行映射:

    return new Docket(DocumentationType.SWAGGER_2)
            .securitySchemes(schemeList)
            .alternateTypeRules( AlternateTypeRules.newRule(
                    typeResolver.resolve(LocalDate.class),
                    typeResolver.resolve(Date.class), Ordered.HIGHEST_PRECEDENCE),
                    AlternateTypeRules.newRule(
                            typeResolver.resolve(List.class, LocalDate.class),
                            typeResolver.resolve(List.class, String.class), Ordered.HIGHEST_PRECEDENCE),
                    AlternateTypeRules.newRule(
                            typeResolver.resolve(List.class, YourBaseClass.class),
                            typeResolver.resolve(List.class, YourRicherSubclass.class), Ordered.HIGHEST_PRECEDENCE)

            )
            .select()

这是一个映射列表的示例,但对标准对象也可以使用。