在Swagger-UI中对API方法进行排序
我找不到任何工作示例,如何实现以下内容:我希望我的Swagger-UI中的API方法按方法(GET-POST-PUT-DELETE)或/按字母顺序排序。
到目前为止,所有方法都以随机顺序显示,甚至不按给定源代码的顺序显示。
我使用Jax-RS + Jersey 1。
使用@ApiOperation的position属性进行排序对我来说不是一个选项,因为有太多方法且API仍在扩展,所以如果有新的方法我需要更新所有方法。
任何提示?
Swagger UI 2.1.0+的更新: sorter
参数已分为两个参数,如Fix 1040 , Fix 1280中所述 :
apisSorter
对API /标签列表应用排序。 它可以是’alpha’(按名称排序)或函数(请参阅Array.prototype.sort()以了解sort函数的工作原理)。 默认值是服务器返回的顺序不变。
operationsSorter
将排序应用于每个API的操作列表。 它可以是’alpha’(按字母数字路径排序),’method’(按HTTP方法排序)或函数(请参阅Array.prototype.sort()以了解sort函数的工作原理)。 默认值是服务器返回的顺序不变。
因此,您需要将sorter
更新为apisSorter
以按字母顺序对API列表进行排序,和/或operationsSorter
对每个API的操作列表进行排序。 宠物店演示已更新为apisSorter,如下所示:
示例 🙁 工作演示 ,按字母顺序排序)
window.swaggerUi = new SwaggerUi({ ... apisSorter : "alpha" });
对于早于2.1.0的Swagger UI版本 :
sorter
参数仍然与旧版本的Swagger UI相关:
您可以在实例化SwaggerUi时使用sorter参数。 这发生在Swagger-Ui index.html上的javascript中。 从文档 :
排序器将排序应用于API列表。 它可以是’ alpha ‘(按字母数字排序路径)或’ method ‘(通过HTTP方法排序操作)。 默认值是服务器返回的顺序不变。
示例 :
window.swaggerUi = new SwaggerUi({ ... sorter : "alpha" });
// 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.swaggerUi = new SwaggerUi({ ... apisSorter: "alpha", // can also be a function operationsSorter : "method", // can also be 'alpha' or a function });