chr*_*s14 5 java swagger-ui spring-boot swagger-2.0 springfox
我在一个 Spring Boot 应用程序中设置两个不同的 Docket API。我给了一个 Docket“Test”groupName 并保留另一个,因此它最终在 Swagger UI 中成为“默认”。
我的问题是,如何在 UI 中排列这些 Dockets 的顺序。
起初我以为是按字母顺序排列的,但事实并非如此。我不断地改变名字,但顺序未知。
@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;
}
Run Code Online (Sandbox Code Playgroud)
https://i.stack.imgur.com/bAmNm.jpg
抱歉,我还不能发布图片,所以我留下直接的 URL。
当我运行 spring boot 应用程序时,我希望默认的 Swagger UI 显示为“默认”UI。
案卷确实是按字母顺序排序的 - 您的示例中的案卷也是如此。如果摘要的组名称为“Test”和“default”,则摘要也会按此顺序显示在 Swagger UI 页面上。如果您明确命名的摘要的名称是“测试”(而不是“测试”或“测试卡”),那么它们将按照您的预期显示。
这种行为的原因是默认情况下使用区分String.compareTo(String)
大小写的方法比较字符串 - 考虑到,由于示例中的摘要名称的第一个字符是“T”和“d”,名称为“Test”的摘要应该确实出现在名称为“default”之前,因为它们的 Unicode 值分别为 84 和 100。
另一方面,不幸的是,您的问题的答案是否定的 - 特别是如果您使用的是 Swagger2 或更旧版本。有提议/拉请求删除案卷排序,并且该更改将包含在 Swagger3 中(根据 Springfox 当前主要贡献者对共享拉请求的响应)。现在你有 3 个肮脏的选项来实现摘要按想要的顺序显示:
@Bean
。在前面提到的拉取请求及其评论中,您可以找到需要进行哪些细微更改。除了将提到的 2 个类导出到您的项目之外,您还必须使用非公共访问修饰符提取相应的已使用类。注意:如果你一切都做对了,你最终应该得到 5 门课。另外,不要忘记使用注释@Component
来注释提取和自定义的类@Primary
! 归档时间: |
|
查看次数: |
2941 次 |
最近记录: |