Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Swagger UI中对API方法进行排序_Java_Jax Rs_Swagger_Swagger Ui - Fatal编程技术网

Java 在Swagger UI中对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+的更新:分拣机的参数已分为两个参数,如中所

我找不到任何工作示例,如何实现以下目标: 我希望我的API方法在Swagger UI中按方法(GET-POST-PUT-DELETE)或/和字母顺序排序

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

我使用Jax-RS+1

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


有任何提示吗?

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");