Java 在Swagger UI中对API方法进行排序
我找不到任何工作示例,如何实现以下目标: 我希望我的API方法在Swagger UI中按方法(GET-POST-PUT-DELETE)或/和字母顺序排序 到目前为止,所有方法都是以随机顺序显示的,甚至不是以我的源代码给出的顺序 我使用Jax-RS+1 使用@ApiOperation的position属性进行排序对我来说不是一个选项,因为有太多的方法,而且API仍在扩展,所以如果有新方法,我需要更新所有方法Java 在Swagger UI中对API方法进行排序,java,jax-rs,swagger,swagger-ui,Java,Jax Rs,Swagger,Swagger Ui,我找不到任何工作示例,如何实现以下目标: 我希望我的API方法在Swagger UI中按方法(GET-POST-PUT-DELETE)或/和字母顺序排序 到目前为止,所有方法都是以随机顺序显示的,甚至不是以我的源代码给出的顺序 我使用Jax-RS+1 使用@ApiOperation的position属性进行排序对我来说不是一个选项,因为有太多的方法,而且API仍在扩展,所以如果有新方法,我需要更新所有方法 有任何提示吗?Swagger UI 2.1.0+的更新:分拣机的参数已分为两个参数,如中所
有任何提示吗?Swagger UI 2.1.0+的更新:分拣机的
参数已分为两个参数,如中所述:
剪羊毛机
对API/标记列表应用排序。它可以是“阿尔法”
(按名称排序)或函数(请参见Array.prototype.sort()了解如何排序)
排序功能正常)。默认值是服务器返回的订单
不变
操作分拣机
对每个API的操作列表应用排序。它可以是“alpha”(按字母数字路径排序)、“method”(按字母数字路径排序)
HTTP方法)或函数(请参见Array.prototype.sort()了解如何使用
排序功能正常)。默认值是服务器返回的订单
不变
因此,您需要将sorter
更新为apisSorter
以按字母顺序对API列表进行排序,和/或operationsSorter
以对每个API的操作列表进行排序。宠物店演示已更新为apisSorter,如下所示:
:(,按字母顺序排序)
对于早于2.1.0的招摇过市UI版本:
sorter
参数仍然与较旧版本的Swagger UI相关:
在实例化SwaggerUi时,可以使用sorter参数。这发生在Swagger Ui index.html上的javascript中。从:
分拣机对API列表进行分拣。它可以是“alpha”(排序路径
字母数字)或“方法””(按HTTP方法排序操作)。
默认情况下,服务器返回的订单保持不变
:
公认的答案有点过时。在较新版本中,可通过以下方式完成:
window.swaggerUi = new SwaggerUi({
...
apisSorter: "alpha", // can also be a function
operationsSorter : "method", // can also be 'alpha' or a function
});
对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")]);
},
...
});
对于使用SwaggerUI3的.net核心用户:
app.UseSwaggerUi3(j=>j.TagsSorter = "alpha");
谢谢,这似乎是我一直在寻找的解决方案!不幸的是,我无法让它工作,无论是“alpha”还是“method”。同时迁移到Jersey-2,现在使用swagger.js 2.0.30和swagger-jersey2-jaxrs_2.10 1.3.4。知道吗,如果这种配置能正常工作的话?好的,分拣机参数看起来很新。我还将我的swagger文档更新为您链接中的文档(swagger.js 2.0.41),这与sorter参数一起工作!很酷:)谢谢,这对我来说也是最好的解决方案!对于标签排序,现在是tagsSorter
<代码>标记器:“alpha”
感谢您的更新!你能添加一个提示,它指的是哪个版本吗?不幸的是,我只能确认它在版本2.1.1中有效。这是目前在线,我也在这样使用它。此处也有相关记录:。但是我不能说,他们什么时候改变了它,另一个已经过时了:(对于标记排序,现在是tagsSorter
。tagsSorter:“alpha”
你使用哪个版本?这也是2.1吗?如果路径中没有使用控制器/方法的名称,那么对API方法进行排序是[HttpGet({id})]
和[HttpGet]
?我尝试过这种方法,但不起作用。有什么想法吗?
// 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]);
},
});
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")]);
},
...
});
app.UseSwaggerUi3(j=>j.TagsSorter = "alpha");