gpt4 book ai didi

java - 我可以更改 Swagger 显示的默认定义吗?

转载 作者:行者123 更新时间:2023-12-02 08:58:49 35 4
gpt4 key购买 nike

enter image description here

我可以将默认定义从“默认”更改为我自己的定义吗?我希望加载页面,而不是加载“默认”页面,而是加载我的页面,在本例中称为“swagger”:

enter image description here

我正在使用 Spring Fox 和 Spring Boot。这是我的 Swagger Config 类:

@Configuration
@EnableSwagger2WebMvc
@Import(SpringDataRestConfiguration.class)
public class SwaggerDocumentationConfig {
@Bean
public Docket api() {

return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.openet.usage.trigger"))
.paths(PathSelectors.any())
.build();
}

private static Predicate<String> matchPathRegex(final String... pathRegexs) {
return new Predicate<String>() {
@Override
public boolean apply(String input) {
for (String pathRegex : pathRegexs) {
if (input.matches(pathRegex)) {
return true;
}
}
return false;
}
};
}

@Bean
WebMvcConfigurer configurer () {
return new WebMvcConfigurerAdapter() {
@Override
public void addResourceHandlers (ResourceHandlerRegistry registry) {
registry.addResourceHandler("/config/swagger.json").
addResourceLocations("classpath:/config");
registry
.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry
.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
};
}
}

最佳答案

可以改变这种行为,但它看起来更像是一种黑客行为。

SwaggerResourcesProvider 负责为下拉列表提供信息。首先,实现这个接口(interface)。其次,将 Primary 注释添加到您的类中,以成为应该使用的主要实现,而不是默认的 InMemorySwaggerResourcesProvider 类。但重用 InMemorySwaggerResourcesProvider 提供的定义仍然有意义,这就是应该注入(inject)它的原因。

最后一部分是实现重写的get方法并更改为您想要显示的列表。此示例应仅显示一个名为 swagger 的定义。

// other annotations
@Primary
public class SwaggerDocumentationConfig implements SwaggerResourcesProvider {
private final InMemorySwaggerResourcesProvider resourcesProvider;

@Inject
public MySwaggerConfig(InMemorySwaggerResourcesProvider resourcesProvider) {
this.resourcesProvider = resourcesProvider;
}

@Override
public List<SwaggerResource> get() {
return resourcesProvider.get().stream()
.filter(r -> "swagger".equals(r.getName()))
.collect(Collectors.toList());
}

// the rest of the configuration
}

关于java - 我可以更改 Swagger 显示的默认定义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60326035/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com