我正在使用优秀的swagger2markup插件为Swagger提供的REST API生成Asciidoc文档。我跟着swagger2markup documentation并且我正在使用Spring MVC集成测试来生成我的Springfox Swagger端点的标记(我正在使用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());
}
}
一切都运行良好,我的所有路径都在我的最终文档中,但是路径都直接出现在根目录中,而不是按资源分组(即通过控制器),所以Method 1
来自Controller 1
的{{1}}与Method 2
的{{1}}相同。
我的输出:
我想要的是什么:
从我所看到的情况来看,当使用本swagger2-markup Maven project template中的本地文件生成时,您可以指定一个属性来告诉swagger2markup使用config属性Controller 2
按标记对路径进行分组,但是在测试中使用<swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy>
时似乎不是这样的配置。唯一的选择是Swagger2MarkupResultHandler
,但没有withMarkupLanguage()
方法...
我在这里错过了什么吗?
答案 0 :(得分:2)
正如您所提到的,swagger2Markup提供了一个swagger2markup.pathsGroupedBy
属性来指定路径的分组方式。但是,Swagger2MarkupResultHandler
不提供API来支持配置。
Swagger2Markup的属性在类中定义 io.github.swagger2markup.Swagger2MarkupProperties。属性是 按以下顺序考虑:
Java系统属性
自定义属性
- 醇>
默认属性(包含在Swagger2Markup中)
可以使用系统属性对其进行配置。因此,您可以在测试中将swagger2markup.pathsGroupedBy
的系统属性设置为TAGS
。
如果您希望使用Java API对其进行配置,则可以使用Swagger2MarkupResultHandler API扩展Swagger2MarkupConfigBuilder并覆盖handle
方法。