5

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

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

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

谢谢!

4

2 回答 2

3

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

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

于 2016-04-07T16:00:04.467 回答
0

作为替代解决方案(我不知道上面的选项),我创建了自己的注释,它像这样重用 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但是,由于它使用的目标,这种方法不起作用。

于 2020-07-24T10:51:18.780 回答