java - 如何手动对 Swagger UI 上显示的端点进行排序?

标签 java java-8 swagger-2.0

我正在使用 Docket 来配置我的 Swagger 2 实例。
但我目前看到的唯一选项是按类型(POST、GET 等)或端点名称(a-z)排序。

我的端点有一个逻辑顺序,我想按这个顺序显示它们

我想要的是:

POST /start
POST /uplaod
POST /finalize
POST /checkStatus

相反,我得到了这样的东西:
POST /checkStatus
POST /finalize
POST /start
POST /upload

代码:
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .host(swaggerHost)
                .pathProvider(new RelativePathProvider(servletContext) {

                    @Override
                    public String getApplicationBasePath() {
                        return swaggerBasePath;
                    }
                })
                .select()
                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                .build()
                .apiInfo(apiInfo())
                .securitySchemes(Collections.singletonList(securitySchema()))
                .securityContexts(Collections.singletonList(securityContext()));
    }

最佳答案

为 swagger UI 订购端点的一种简单方法是使用标签:https://swagger.io/docs/specification/grouping-operations-with-tags/
编辑:添加我用来解决以下评论的替代方法:我倾向于使用具有自定义比较功能的操作排序器。例子:

operationsSorter: function (a, b) {
  var order = {'get': '0', 'post': '1', 'patch': '2', 'put': '3', 'delete': '4'};
  if (a.get('path') == b.get('path')) {
    return order[a.get('method')].localeCompare(order[b.get('method')]);
  }
  if (a.get('path').split('/').length == b.get('path').split('/').length) {
    return a.get('path').split('/').slice(-1)[0].localeCompare(b.get('path').split('/').slice(-1)[0]);
  }
  return a.get('path').split('/').length - b.get('path').split('/').length;
}

关于java - 如何手动对 Swagger UI 上显示的端点进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57528402/

相关文章:

java - 根据JSON格式有条件地反序列化一个对象

java - Java 8 是否可以一步创建一个列表或任何其他分组、排序和计数的数据结构?

java - 有什么办法可以简化这个流表达式吗?

spring-boot - springfox/swagger2与springboot应用程序集成

java - Java中静态变量和静态 block 是如何分配内存的?

javascript - Java 和 JavaScript 之间使用 OAEP 进行 RSA 加密

java - 节点列中带有复选框的 Swing Outline

java-8 - Parallel Stream 非并发无序收集器

java - Swagger2 更改 Swagger Ui 的基本路径

rest - 内部错误 (500) 是否应该成为 Swagger API 文档的一部分?