当前位置: 首页 > 知识库问答 >
问题:

重用复杂的spring-福克斯swagger注释

滕翔飞
2023-03-14

我正在使用spring-fox2@apiimplicitparam注释使swagger-ui显示一个包含授权头和请求的框:

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

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

谢谢!

共有2个答案

夏侯兴怀
2023-03-14

作为另一种解决方案(我不知道上面的选项),我创建了自己的注解,该注解重用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使用的目标,这种方法对它不起作用。

华章横
2023-03-14

解决问题的另一种方法是完全不使用注释。相反,使用docket添加全局操作参数(参见#22)。您可以将标题添加到docket中的所有操作中。

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

 类似资料:
  • 假设我有一个并行度为n的ForkJoinPool设置,我称之为这样的并行计算: 我这样做是为了确保生成的线程是在工作池中创建的(我有需要隔离的系统的不同组件)。现在假设调用它的线程也在这个工作池中执行,我会: 1) 我是不是挡住了泳池里的一根线?如果我让n个线程都阻塞未来,同时尝试在工作池中安排任务,这会导致死锁吗?我不清楚ForkJoinPool中的“最大并行度”是否意味着(如果有n个未阻塞的任

  • 如http://spockframework.org/spock/docs/1.3/interaction_based_testing.html#_explicit_interaction_blocks中所述,我在块中使用,如下所示: Java代码: 斯波克试验: null

  • 我正在注释和分析一系列文本文件。 pipeline.annotate方法每次读取文件时都会变得越来越慢。最终,我得到了一个OutOfMemoryError。 管道初始化一次: 然后,我使用相同的管道实例处理每个文件(如SO和斯坦福大学在其他地方推荐的)。 明确地说,我希望问题出在我的配置上。但是,我确信失速和内存问题发生在pipeline.annotate(file)方法上。 在处理每个文件后,我

  • #福锐泰克freetech面经# 嵌入式c #校招# 一面 自我介绍 介绍项目 针对项目提问,涉及到知识包括多线程,守护进程,父子进程,进程间通信,流控算法等 多线程如何gdb调试? 介绍一下bfs,dfs 反问:流程?部门做什么的?

  • 这是意料之中的行为吗?我在前面运行完整的管道吗?

  • 我在使用Stanford pipeline(CoreNLP的最后一个版本)解析BNC时遇到了一个问题。 解析器只是停留在这个句子中,它甚至不会抛出错误。句子在web界面中得到正确的解析。 我尝试了标记器的选项,但没有结果。 我添加了我正在使用的命令行:java[...]edu.stanford.nlp.pipeline.stanfordCorenlp-注释器tokenize,ssplit,pos,