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

Swagger2Markup:使用Swagger远程endpoint从测试时如何按标签分组?

陈浩
2023-03-14

我正在使用伟大的swagger2markup插件为我的RESTAPI生成Asciidoc文档,正如Swagger提供的那样。我遵循了swagger2markup文档,并使用Spring MVC集成测试从我的Springfox Swaggerendpoint生成如下标记(我使用Maven):

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { AppConfig.class, SwaggerConfig.class })
public class DocumentationIT {

    protected MockMvc mockMvc;

    @Autowired
    protected WebApplicationContext webApplicationContext;

    @Rule
    public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("src/docs/asciidoc/apidoc/generated-snippets");

    @Before
    public void setUp(){
        this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext)
                .apply(documentationConfiguration(this.restDocumentation))
                .build();
    }

    @Test
    public void convertSwaggerToAsciiDoc() throws Exception {
        this.mockMvc.perform(get("/v2/api-docs")
                .accept(MediaType.APPLICATION_JSON))
                .andDo(
                        Swagger2MarkupResultHandler
                                .outputDirectory("src/docs/asciidoc/apidoc")
                                .withExamples("src/docs/asciidoc/apidoc/generated-snippets").build())
                .andExpect(status().isOk());
    }
}

一切都很好,我所有的路径都在我的最终留档中,但是路径都直接出现在根目录上,并且不按资源分组(即按控制器),因此Controller 1中的方法1将与Controller 2中的方法2显示在同一级别。

我的输出:

我想要的是:

从我所看到的情况来看,当像在这个swagger2 markup Maven项目模板中那样使用从本地文件生成时,可以指定一个属性,告诉swagger2markup使用config属性对路径进行分组

我错过什么了吗?

共有1个答案

东郭宏深
2023-03-14

正如您所提到的,有一个属性是swagger2markup。pathsGroupedBy由swagger2Markup提供,用于指定路径的分组方式。但是,Swagger2MarkupResultHandler不提供API来支持配置。

根据Swagger2Markup API,

Swagger2Markup的属性是在2mark. Swagger2MarkupPropertiesio.github.swagger类中定义的。这些属性按以下顺序考虑:

>

  • Java系统属性

    定义属性

    默认属性(包含在Swagger2Markup中)

    可以使用系统属性来配置它。因此,您可以在测试中将swagger2markup.pathsGroupeBy的系统属性设置为TAGS

    如果您喜欢使用JavaAPI配置它,您可以扩展Swagger2MarkupResultHandler并使用Swagger2MarkupConfigBuilder API覆盖句柄方法。

  •  类似资料:
    • 在springfox swagger 2.9.2的spring boot项目中,我使用RestController注释了控制器 在我将标记添加到ApiOperation之后,我在swagger ui中得到了重复的endpoint。我有没有任何endpoint的空身份验证资源和有登录endpoint的身份验证资源。 这在旧的昂首阔步的版本中没有发生。如何从swagger-ui中删除空api? 谢谢

    • 问题内容: 我有一个根视图控制器,没有将其设置为故事板上的任何视图控制器的自定义类。相反,我所有的视图控制器都将此类子类化。 但是,当在视图控制器上按下tabbaritem时,我似乎正在做某事,该控件是rootviewcontroller的子类,即消息未打印。 问题答案: 您不希望视图控制器的基类是UITabBarDelegate。如果要这样做,则所有视图控制器子类都将是标签栏委托。我认为您想要做

    • 我正在尝试弄清楚如何调试远程运行的jar。这是我的场景: > 我的. jar将从VPS运行。这个jar基本上运行一个游戏的服务器,所以它也连接到一个mysql db。我用3. bat文件启动服务器,看起来像这样: 设置CLASSPATH=.; dist\aries.jar; dist\mina-core.jar; dist\slf4j-api.jar; dist\slf4j-jdk14.jar;

    • 问题内容: 我有两个 java类 和 两个 类的 两个布局 。每个 布局 中都有一个 按钮 。这两类都在扩展。现在在第一个布局中,我使用了 包含这样的 标签 我现在可以看到 两个按钮, 但是 第二个按钮 不起作用。 问题答案: 首先, 您必须声明并初始化 包含 视图,然后使用 view.findViewById() 方法进行贴花和初始化两个按钮,如下所示: 然后设置他们的 onClickListe

    • 我有多个控制器,每个都有GET,POST,PUT,DELETE API。默认情况下,在控制器级别对API进行大摇大摆的分组。在swagger文档中,有没有什么方法可以按http方法类型对这些API进行分组?即一起获取API,一起发布API等。

    • 我需要调用一个endpoint,它需要一个字段: 在我的测试中,我有以下代码: 不包含默认构造函数,所以为了避免这个问题,我创建了一个类,如下所示,以传递给: 问题是我仍然得到以下错误: 为什么它一直说我通过了一个抽象类?是一个类,而不是抽象类。 非常感谢。