SpringFox Swagger - 模型

时间:2017-05-03 22:56:41

标签: java spring spring-boot swagger springfox

我使用SpringFox库来获取我的春季启动应用程序的休息文档。当我单击模型时,所有元素都将作为可选项返回。有没有办法将所需元素显示为必需元素?是否需要添加其他配置?

4 个答案:

答案 0 :(得分:10)

默认为是所有字段都是可选的。要根据需要标记字段,可以使用以下注释。

@ApiModelProperty(required = true)

在应该需要的字段的getter方法上。 这不会将该字段显示为强制性"。但是文档中的此字段将删除可选标记。

希望这有帮助。

答案 1 :(得分:2)

在Swagger配置中尝试类似的代码:

    @Bean
public Docket api() {

    List<ResponseMessage> list = new java.util.ArrayList<>();
    list.add(new ResponseMessageBuilder().code(500).message("500 message")
            .responseModel(new ModelRef("JSONResult«string»")).build());
    list.add(new ResponseMessageBuilder().code(401).message("Unauthorized")
            .responseModel(new ModelRef("JSONResult«string»")).build());

    return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any()).build().securitySchemes(Collections.singletonList(securitySchema()))
            .securityContexts(Collections.singletonList(securityContext())).pathMapping("/")
            .directModelSubstitute(LocalDate.class, String.class).genericModelSubstitutes(ResponseEntity.class)
            .alternateTypeRules(newRule(
                    typeResolver.resolve(DeferredResult.class,
                    typeResolver.resolve(ResponseEntity.class, WildcardType.class)),
                    typeResolver.resolve(WildcardType.class)))
            .useDefaultResponseMessages(false).apiInfo(apiInfo()).globalResponseMessage(RequestMethod.GET, list)
            .globalResponseMessage(RequestMethod.POST, list);
}

在控制器映射中添加@RequestBody @Valid MyRequestClass req,例如,如果要在请求正文中传递对象,并且如果要传递参数,请添加@RequestParam(value = "email", required = true, defaultValue = "") String email

之类的内容

另外,请参阅配置代码中如何引用具有泛型类型的类,即引用"JSONResult«string»"的{​​{1}}

答案 2 :(得分:1)

添加了对bean验证注释的支持,特别是Springfox v2.3.2中的@ NotNull,@ Min,@ Max和@Size。

您可以将这些注释放在您的任何API模型上。

要使用它,请添加springfox-bean-validators依赖项:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-bean-validators</artifactId>
</dependency>

添加到应用程序的配置类:

@Import({springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration.class})

请参阅:https://springfox.github.io/springfox/docs/current/#springfox-support-for-jsr-303

答案 3 :(得分:1)

我也遇到了同样的问题,但是有了@etech技巧,我能够看到标明的必填字段。我所做的就是将springfox-swagger.version升级到2.9.2(从2.4.0)和guava.version升级到20.0(从15),以及在应用程序配置类中的导入。谢谢。