如何解决如何将其他属性设置为布尔值
我试图将Additional Properties元素设置到Open API Schema 3.X中,但是很遗憾,我无法在文档中找到任何对我有帮助的东西。 我在Spring Boot中有一个Application,它使用的是Spring Doc OAS,它依赖Swagger OAS作为传递依赖项。 让我在这里选择一些代码片段:
@GetMapping("/{accountId}")
@Operation(summary = "Get account by account id",tags = TAG)
@ApiResponses(value = {
@ApiResponse(responseCode = "200",description = "Return a specific account queried by path",content = { @Content(mediaType = "application/json",schema = @Schema(implementation = AccountDetailsDTO.class)) }),@ApiResponse(responseCode = "404",description = "No accounts found",content = @Content) })
public ResponseEntity<AccountDetailsDTO> getAccountDetailsByClientId(@PathVariable("accountId") Integer accountId) { }
此属性默认为true,我希望看到的是 false ,如下所示:
解决方法
如果您想将属性显式设置为false,那么如果使用Springfox,则可以为您规范中的每个组件将TransformationFilter(Spring的@Component标注为false)设置为false。
如果您使用的是Springdoc,则可以添加OpenApiCustomiser bean,请参见示例
Springdoc OpenAPI示例
@Bean
public OpenApiCustomiser openApiCustomiser() {
return openApi -> openApi.getComponents().getSchemas().values().forEach( s -> s.setAdditionalProperties(false));
}
Springfox框架示例
@Component
@Order(Ordered.HIGHEST_PRECEDENCE + 1)
public class OpenApiTransformationFilter implements WebMvcOpenApiTransformationFilter
{
public boolean supports(@NotNull DocumentationType delimiter)
{
return SwaggerPluginSupport.pluginDoesApply(delimiter);
}
@Override
public OpenAPI transform(OpenApiTransformationContext<HttpServletRequest> context)
{
OpenAPI openApi = context.getSpecification();
openApi.getComponents().getSchemas().values().forEach(schema -> schema.setAdditionalProperties(false));
return openApi;
}
}
,
一种解决方法可能是定义一个包含类型信息的伪类,然后将其用作@Schema#implementation
中的@APIResponse
类。
static class YourTypeMap extends java.util.HashMap<String,YourType> {};
然后:
@APIResponse(
responseCode = "200",content = @Content(
mediaType = "application/json",schema = @Schema(implementation = YourTypeMap.class)))
积分:MikeEdgar
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。