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

时间:2014-07-25 08:25:57

标签: java jax-rs swagger swagger-ui

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

到目前为止,所有方法都以随机顺序显示,即使不是按照源代码的顺序显示。

我使用Jax-RS + Jersey 1.

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

任何提示?

6 个答案:

答案 0 :(得分:15)

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

  

apisSorter

     

对API /标签列表应用排序。它可以是' alpha'   (按名称排序)或函数(请参阅Array.prototype.sort()以了解如何操作   排序功能工作)。默认值是服务器返回的顺序   不变。

     

operationsSorter

     

对每个API的操作列表应用排序。它可以是' alpha' (按字母数字路径排序),'方法' (排序方式   HTTP方法)或函数(请参阅Array.prototype.sort()以了解具体方法   排序功能工作)。默认值是服务器返回的顺序   不变。

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

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

window.swaggerUi = new SwaggerUi({

...

apisSorter : "alpha"
});

对于早于2.1.0的Swagger UI版本

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

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

  

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

Example

window.swaggerUi = new SwaggerUi({

...

sorter : "alpha"
});

答案 1 :(得分:9)

> dat <- read.table("data.txt", quote="\"", comment.char="")
> dat
     V1  V2   V3
1  2011 Apr 1376
2  2012 Apr 1232
3  2013 Apr 1360
4  2014 Apr 1294
5  2015 Apr 1344
6  2011 Aug 1933
7  2012 Aug 1930
8  2013 Aug 1821
9  2014 Aug 1845
10 2015 Aug 1855
> library(reshape2)
> dcast(dat, V1~V2)
Using V3 as value column: use value.var to override.
    V1  Apr  Aug
1 2011 1376 1933
2 2012 1232 1930
3 2013 1360 1821
4 2014 1294 1845
5 2015 1344 1855

答案 2 :(得分:8)

接受的答案有点过时了。在较新的版本中,它由以下人员完成:

window.swaggerUi = new SwaggerUi({

...

apisSorter: "alpha", // can also be a function
operationsSorter : "method", // can also be 'alpha' or a function
});

答案 3 :(得分:0)

更新Swagger 3.18.3

 window.ui = SwaggerUIBundle({
           ...
            operationsSorter: function (a, b) {
                var order = {'get': '0', 'post': '1', 'put': '2', 'delete': '3'};
                return order[a.get("method")].localeCompare(order[b.get("method")]);
            },
           ...
 });

答案 4 :(得分:0)

对于使用SwaggerUI3的.net Core用户:

 app.UseSwaggerUi3(j=>j.TagsSorter = "alpha");

答案 5 :(得分:0)

对于最终遇到相同问题的 Python 人员,这里是如何解决它

使用 flasgger v0.9.5 (=Swagger-UI 3.28.0) 和 Flask v2.0.1:

app = Flask(__name__)
config = {
    "ui_params": {
        "operationsSorter": "alpha",  # sorts endpoints alphabetically within a tag
        "tagsSorter": "alpha". # sorts tags alphabetically
    }
}
Swagger(app, config=config)