我在一个Spring Boot应用程序中设置了两个不同的Docket API。我给了一个Docket“ Test” groupName并留下了另一个,因此在Swagger UI中最终以“ default”结束。
我的问题是,如何在用户界面中排列这些文件的顺序。
起初,我认为它是按字母顺序排列的,但事实并非如此。我一直在更改名称,但是顺序未知。
@Bean
public Docket myAPI(){
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("anything"))
.paths(PathSelectors.regex("/v1/anything.*"))
.build()
.apiInfo(apiInfo());
buildGlobalParameter(docket);
buildGlobalResponseMessage(docket);
return docket;
}
@Bean
public Docket testAPI(){
Docket tDocket = new Docket(DocumentationType.SWAGGER_2)
.groupName("Test Card")
.select()
.apis(RequestHandlerSelectors.basePackage("anything"))
.paths(PathSelectors.regex("/v1/anything2*"))
.build()
.apiInfo(apiTestInfo());
buildGlobalParameter(tDocket);
buildGlobalResponseMessage(tDocket);
return tDocket;
}
https://i.imgur.com/bMiGkXe.jpg
[抱歉,我还不能发布图像,所以我要保留直接URL。
运行Spring Boot应用程序时,我希望默认的Swagger UI显示为“默认”。
行李箱确实按字母顺序排序-您示例中的行李箱也是如此。如果扩展坞的组名是“ Test”和“ default”,则扩展坞也会以该顺序显示在Swagger UI页面上。如果您显式命名的摘要的名称是“ test”(而不是“ Test”或“ Test Card”),则显示的内容将与您期望的一样。
发生这种情况的原因是,默认情况下使用区分大小写的String.compareTo(String)
方法比较字符串-考虑到,因为示例中案卷名称的第一个字符为'T'和'd',所以案卷名称为“ Test”应该真正出现在名称为“ default”的名称之前,因为它们的Unicode值分别为84和100。
另一方面,很遗憾,您的问题的答案是否定的-特别是在使用Swagger2或更早版本的情况下。有proposal/pull-request用于删除文案排序,而该更改将包含在Swagger3中(根据Springfox当前主要贡献者对共享请求请求的响应)。现在,您有3个肮脏的选项,可以实现按想要的顺序显示被子:
@Bean
注释定义/注入的顺序相同。在前面提到的pull-request及其注释中,您可以找到需要做的较小更改。除了将2个提到的类导出到您的项目外,您还必须使用非公共访问修饰符提取相应的使用过的类。注意:如果您将所有事情都做对了,那么您应该得到5个班级。另外,不要忘了用@Component
批注注释提取和自定义的@Primary
类!