SpringFox Swagger - 模型中的可选和必填字段
SpringFox Swagger - Optional and Mandatory fields in model
我使用 SpringFox 库作为 spring 引导应用程序的其余文档。当我点击 model 时,所有元素都作为可选元素返回。有没有办法将必需的元素显示为强制性的?是否需要添加任何其他配置?
在 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
的内容
此外,查看配置代码中如何引用具有通用类型的 class,即 "JSONResult«string»"
引用 JSONResult<String>
默认是所有字段都是可选的。要根据需要标记字段,您可以使用以下注释。
@ApiModelProperty(required = true)
关于getter方法的字段应该是必填的。
这不会将该字段显示为 "mandatory"。但文档中此字段的可选标记将被删除。
希望对您有所帮助。
添加了对 bean 验证注释的支持,特别是 Springfox v2.3.2 中的 @NotNull、@Min、@Max 和 @Size。
您可以将这些注释放在任何 API 模型上。
为了使用它添加 springfox-bean-validators 依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
</dependency>
添加到您的应用程序配置 class:
@Import({springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration.class})
参见:https://springfox.github.io/springfox/docs/current/#springfox-support-for-jsr-303
我遇到了同样的问题,但通过 @etech 提示,我能够看到以 swagger 标记的必填字段。我所做的只是将 springfox-swagger.version 升级到 2.9.2(从 2.4.0)和 guava.version 到 20.0(从 15)加上应用程序配置中的导入 class。谢谢你。
我使用 SpringFox 库作为 spring 引导应用程序的其余文档。当我点击 model 时,所有元素都作为可选元素返回。有没有办法将必需的元素显示为强制性的?是否需要添加任何其他配置?
在 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
此外,查看配置代码中如何引用具有通用类型的 class,即 "JSONResult«string»"
引用 JSONResult<String>
默认是所有字段都是可选的。要根据需要标记字段,您可以使用以下注释。
@ApiModelProperty(required = true)
关于getter方法的字段应该是必填的。 这不会将该字段显示为 "mandatory"。但文档中此字段的可选标记将被删除。
希望对您有所帮助。
添加了对 bean 验证注释的支持,特别是 Springfox v2.3.2 中的 @NotNull、@Min、@Max 和 @Size。
您可以将这些注释放在任何 API 模型上。
为了使用它添加 springfox-bean-validators 依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
</dependency>
添加到您的应用程序配置 class:
@Import({springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration.class})
参见:https://springfox.github.io/springfox/docs/current/#springfox-support-for-jsr-303
我遇到了同样的问题,但通过 @etech 提示,我能够看到以 swagger 标记的必填字段。我所做的只是将 springfox-swagger.version 升级到 2.9.2(从 2.4.0)和 guava.version 到 20.0(从 15)加上应用程序配置中的导入 class。谢谢你。