【问题标题】:reuse complex spring-fox swagger annotation重用复杂的spring-fox swagger注解
【发布时间】:2016-07-28 07:00:13
【问题描述】:

我正在使用 spring-fox2 @ApiImplicitParam 注释使 swagger-ui 显示一个框,用于在请求中包含 Authorization 标头:

@ApiImplicitParams({
        @ApiImplicitParam(
                name="Authorization",
                value="authorization header containing the bearer token",
                paramType = "header"
        )
})
public void someControllerMethod() {
    ...
}

这很好用,但我需要为控制器中的每个方法提供此授权标头。复制和粘贴这是代码异味。我可以为此定义某种快捷方式注释吗?是否有不同的方式告诉 swagger-ui 为授权标头创建输入字段?

谢谢!

【问题讨论】:

    标签: java spring annotations swagger springfox


    【解决方案1】:

    解决问题的另一种方法是根本不使用注释。而是使用add global operation parameters 的案卷,请参阅#22。您可以为案卷中的所有操作添加标头。

    这种方法的缺点可能是您最终可能会配置多个文档,以便您预先选择(请参阅#4、#5、#6)将这些参数添加到哪些操作。

    【讨论】:

      【解决方案2】:

      作为替代解决方案(我不知道上面的选项),我创建了自己的注释,像这样重用 ApiImplicitParam:

      @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE, ElementType.TYPE})
      @Retention(RetentionPolicy.RUNTIME)
      @Documented
      @RequestMapping(method = RequestMethod.GET)
      @ApiImplicitParams({
          @ApiImplicitParam(dataType = "string", paramType = "header", name = HttpHeaders.AUTHORIZATION, value = Constants.ApiKey.DESC),
      })
      public @interface ApiGetMappingV2 {
          /**
           * Alias for {@link RequestMapping#name}.
           */
          @AliasFor(annotation = RequestMapping.class)
          String name() default "";
      
          /**
           * Alias for {@link RequestMapping#value}.
           */
          @AliasFor(annotation = RequestMapping.class)
          String value() default "";
      }
      

      然后我只使用该注释而不是映射:

          @ApiGetMapping("/foo")
          @ApiOperation(value = "List all available foos")
          public List<Foo> all() throws MyCustomApiException {
      

      这种方法不适用于@ApiParam,因为它使用的目标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        • 2019-09-29
        • 2021-01-07
        • 1970-01-01
        • 2020-06-27
        相关资源
        最近更新 更多