0

我正在使用带有 Swagger 3 的 Spring Boot 2.5.4。我在 Swagger 配置文件中添加了一个全局请求参数作为类型标头和 required=true。Swagger UI 在所有 API 中正确显示所需的请求标头,但问题是它允许在所需请求标头的值为空时发送请求。在 Swagger 2 中,UI 用于禁用发送请求,直到值被填充。

有什么建议么。

@Bean
    public Docket api() {

        RequestParameterBuilder aParameterBuilder = new RequestParameterBuilder();
        aParameterBuilder.name("x-remote-user").description("Remote User").in(ParameterType.HEADER).required(true)
                .build();

        List<RequestParameter> aParameters = new ArrayList<>();
        aParameters.add(aParameterBuilder.build());
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .securityContexts(Arrays.asList(securityContext())).securitySchemes(Arrays.asList(apiKey())).select()
                .apis(RequestHandlerSelectors.basePackage("com.xxx.controller"))
                .paths(PathSelectors.ant("/api/**")).build().globalRequestParameters(aParameters);
    }
4

1 回答 1

0

我找到了解决方案。如果其他人正在寻找它,请在此处发布。

如果我们不允许空值,那么如果标头值保持为空,swagger UI 就会开始阻止我们执行 API。

@Bean
    public Docket api() {

        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .securityContexts(Arrays.asList(securityContext())).securitySchemes(Arrays.asList(apiKey())).select()
                .apis(RequestHandlerSelectors.basePackage("com.xxx.controller"))
                .paths(PathSelectors.ant("/api/**")).build()
                .globalRequestParameters(Arrays.asList(new RequestParameterBuilder().name("x-remote-user")
                        .description("Remote User").in(ParameterType.HEADER).required(true)
                        .query(simpleParameterSpecificationBuilder -> simpleParameterSpecificationBuilder
                                .allowEmptyValue(false).model(modelSpecificationBuilder -> modelSpecificationBuilder
                                        .scalarModel(ScalarType.STRING)))
                        .build()));
    }
于 2022-02-11T11:04:33.030 回答