Skip to content

Instantly share code, notes, and snippets.

@pajoma
Created March 28, 2023 16:21
Show Gist options
  • Save pajoma/35a73eb5f818856be5d96b736e27b994 to your computer and use it in GitHub Desktop.
Save pajoma/35a73eb5f818856be5d96b736e27b994 to your computer and use it in GitHub Desktop.
SpringDocs - Customize GroupedApi in external Module
@Configuration
public class OpenApiConfiguration_ModuleX {
@Bean("ModXApiDefinitionBuilder")
public GroupedOpenApi.Builder adminApiDefinitionBuilder(@Value("${info.app.version:unknown}") String version) {
return GroupedOpenApi.builder()
.group("My API")
.addOpenApiCustomizer(openApi -> {
openApi.info(new Info().title("My API").version(version));
})
.pathsToMatch("/api/x/**");
}
@Bean("ModXApiDefinition")
public GroupedOpenApi adminApiDefinition(@Qualifier("ModXApiDefinitionBuilder") GroupedOpenApi.Builder builder) {
return builder.build();
}
}
@Configuration
public class OpenApiConfiguration_ModuleY implements InitializingBean {
private @Autowired(required = false) @Qualifier("ModXApiDefinitionBuilder") GroupedOpenApi.Builder builder;
@Override
public void afterPropertiesSet() {
if (Objects.nonNull(this.builder)) {
builder.addOperationCustomizer((ops, method)
-> ops.addParametersItem(new HeaderParameter().name("X-Application")));
}
}
}
@pajoma
Copy link
Author

pajoma commented Mar 28, 2023

Example how to extend an API defined in a different module with additional parameters (in this case a header)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment