Spring + Springfox + Header 参数

Posted

技术标签:

【中文标题】Spring + Springfox + Header 参数【英文标题】:Spring + Springfox + Header Parameters 【发布时间】:2016-08-03 19:06:27 【问题描述】:
@RequestMapping(...)
public Foo getFoo(@HeaderParam("header") final String header) 
    ...

像上面那样添加@HeaderParam 方法参数,springfox 将其拾取,当我查看 swagger-ui 时,它有一个标题字段。这正是我想要的。有没有一种方法可以告诉 springfox 在一组方法中包含此标头参数,而不必在方法本身中包含参数?我们真正要做的是使用标头的 servlet 过滤器,我们希望通过 swagger-ui 轻松设置它。

【问题讨论】:

@HeaderParam 在 Swagger UI 中添加了正文类型参数,而 globalOperationParameters 方法添加了精细的标头类型字段(但是全局的) 对于特定于一种方法(非全局)的正确标头类型参数,请参阅***.com/questions/40801442/… 【参考方案1】:

您可以在案卷定义中使用globalOperationParameters。例如

new Docket(...)
            .globalOperationParameters(
        Arrays.asList(new ParameterBuilder()
            .name("header")
            .description("Description of header")
            .modelRef(new ModelRef("string"))
            .parameterType("header")
            .required(true)
            .build()))

有关详细信息,请参阅文档中的 #22。

【讨论】:

你能看看这个问题吗 - ***.com/questions/42348630/… @Dilip 我在尝试使用此 sn-p 时收到编译错误“未定义 SwaggerConfiguration 类型的方法 newArrayList(Parameter)”。我正在使用 Swagger 2.8.0 版。我错过了什么?你能建议一下吗 那个sn-p是在bean定义方法中定义的,如图?。也许您没有正确放置 sn-p。也希望您删除 ... 等。 为我工作,但为了便于阅读,我最终在 Docket 创建上方创建了参数。 太好了,很有帮助【参考方案2】:

另一个解释相同的答案:-

@Bean
    public Docket api() 
        //Adding Header
        ParameterBuilder aParameterBuilder = new ParameterBuilder();
        aParameterBuilder.name("headerName").modelRef(new ModelRef("string")).parameterType("header").required(true).build();
        List<Parameter> aParameters = new ArrayList<Parameter>();
        aParameters.add(aParameterBuilder.build());
        return new Docket(DocumentationType.SWAGGER_2).select()
                .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build().apiInfo(apiInfo()).pathMapping("").globalOperationParameters(aParameters);
    

【讨论】:

感谢您的回答,它有很大帮助,将最后一个返回语句更改为返回 new Docket(DocumentationType.SWAGGER_2).select() .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any ()).build().pathMapping("").globalOperationParameters(aParameters);

以上是关于Spring + Springfox + Header 参数的主要内容,如果未能解决你的问题,请参考以下文章

Swagger (Springfox) 仅查找 Controller @RequestBody (Spring Boot) 中使用的模型

无法让 springfox-swagger-ui 与 Spring MVC 一起使用

spring-boot集成Springfox-Swagger2

hadoop-common-2.5.0和springfox-spring-web-2.9.2.jar,springfox-schema-2.9.2.jar冲突解决

Spring boot 配置 swagger

SpringFox接口文档API DOC