使用开放 API 配置设置全局参数?

PAA*_*PAA 7 spring swagger spring-boot springdoc

我正在使用Spring Boot REST OpenAPI 3规范。在此示例中,我希望Custom-Header-Version=v1在向每个端点发出请求时全局设置我想要传递的标头 ( )。

现在的问题是,我有100 个 REST 端点,对于每个端点,我需要不断添加@Parameter(in = ParameterIn.HEADER .....此配置,而不是我希望在全局范围内设置它。如果我们在OpenAPI中可以做到这一点,有什么办法吗?

有什么方法可以从 Spring doc ui 中删除 SmartBear 徽标吗?

@RestController
@RequestMapping("/api")
@Tag(name = "contact", description = "the Contact API")
public class HelloController {

    @Operation(summary = "Find Contacts by name", description = "Name search by %name% format", tags = {"contact"})
    @ApiResponses(value = {
            @ApiResponse(responseCode = "200", description = "successful operation", content = @Content(array = @ArraySchema(schema = @Schema(implementation = PersonDTO.class))))})
    @Parameter(in = ParameterIn.HEADER, description = "Custom Header To be Pass", name = "Accept-version"
            , content = @Content(schema = @Schema(type = "string", defaultValue = "v1", allowableValues = {"v1"}, implementation = PersonDTO.class)))
    @GetMapping(value = "/contacts", headers = {"Custom-Header-Version=v1"})
    public ResponseEntity<List<PersonDTO>> findAll(
            @Parameter(description = "Page number, default is 1") @RequestParam(value = "page", defaultValue = "1") int pageNumber,
            @Parameter(description = "Name of the contact for search.") @RequestParam(required = false) String name) {

            return null;
        }
}
Run Code Online (Sandbox Code Playgroud)

SSK*_*SSK 9

你可以尝试下面的代码。在上面提到的代码中添加了 .example("v1")ouled saber

@Component
public class GlobalHeaderOperationCustomizer implements OperationCustomizer {
    @Override
    public Operation customize(Operation operation, HandlerMethod handlerMethod) {

        Parameter customHeaderVersion = new Parameter().in(ParameterIn.HEADER.toString()).name("Custom-Header-Version")
                .description("Custom Header Version)").schema(new StringSchema()).example("v1").required(false);

        operation.addParametersItem(customHeaderVersion);       
        return operation;
    }
Run Code Online (Sandbox Code Playgroud)

我有同样的要求,并且在昂首阔步时我得到如下所示

图片来自 swagger ui