首页 文章

在Swagger-UI中对API方法进行排序

提问于
浏览
16

我找不到任何有用的例子,如何实现以下内容:我希望我的Swagger-UI中的API方法按方法(GET-POST-PUT-DELETE)或/按字母顺序排序 .

到目前为止,所有方法都以随机顺序显示,甚至不按给定源代码的顺序显示 .

我使用Jax-RS Jersey 1 .

使用@ApiOperation的position属性进行排序对我来说不是一个选项,因为有太多的方法而且API仍在扩展,所以如果有一个新的,我需要更新所有 .

任何提示?

3 回答

  • 7

    Update for Swagger UI 2.1.0+: sorter 参数已分为两个参数,如Fix 1040Fix 1280中所述:

    apisSorter对API /标签列表应用排序 . 它可以是'alpha'(按名称排序)或函数(请参阅Array.prototype.sort()以了解sort函数的工作原理) . 默认值是服务器返回的顺序不变 . operationsSorter将排序应用于每个API的操作列表 . 它可以是'alpha'(按字母数字路径排序),'method'(按HTTP方法排序)或函数(请参阅Array.prototype.sort()以了解sort函数的工作原理) . 默认值是服务器返回的顺序不变 .

    因此,您需要将 sorter 更新为 apisSorter 以按字母顺序对API列表进行排序,和/或 operationsSorter 以对每个API的操作列表进行排序 . 宠物店演示已更新为apisSorter,如下所示:

    Example:(working demo,按字母顺序排序)

    window.swaggerUi = new SwaggerUi({
    
    ...
    
    apisSorter : "alpha"
    });
    

    For Swagger UI versions older than 2.1.0

    sorter 参数仍与旧版本的Swagger UI相关:

    您可以在实例化SwaggerUi时使用sorter参数 . 这发生在Swagger-Ui index.html上的javascript中 . 来自documentation

    sorter将排序应用于API列表 . 它可以是'alpha'(按字母数字排序路径)或'method'(通过HTTP方法排序操作) . 默认值是服务器返回的顺序不变 .

    Example

    window.swaggerUi = new SwaggerUi({
    
    ...
    
    sorter : "alpha"
    });
    
  • 9
    // I had the same issue and i fixed like this 
    window.swaggerUi = new SwaggerUi({
        apisSorter: "alpha", 
        operationsSorter: function (a, b) { 
        var order = { 'get': '0', 'post': '1', 'put': '2', 'delete': '3' }; 
        return order[a.method].localeCompare(order[b.method]);    
      },
    });
    
  • 15

    接受的答案有点过时了 . 在较新的版本中,它通过以下方式完成:

    window.swaggerUi = new SwaggerUi({
    
    ...
    
    apisSorter: "alpha", // can also be a function
    operationsSorter : "method", // can also be 'alpha' or a function
    });
    

相关问题