web-dev-qa-db-ja.com

Swagger-UIでのAPIメソッドのソート

次の方法を実行するための実用的な例が見つかりません。Swagger-UIでAPIメソッドをメソッド(GET-POST-PUT-DELETE)またはアルファベット順でソートしたい。

これまでのところ、すべてのメソッドはランダムな順序で表示されています。これは、私のソースコードで指定された順序ではありません。

私はJax-RS + Jersey 1を使用しています。

@ApiOperationのposition属性を使用した並べ替えは、メソッドが多すぎてAPIがまだ拡張されているため、私にとってオプションではありません。新しいメソッドがある場合は、すべてを更新する必要があります。

ヒントはありますか?

19
ulrich

Swagger UI 2.1.0+の更新:Fix 104Fix 1280に記載されているように、sorterパラメーターは2つのパラメーターに分割されました。

apisSorter

API /タグリストに並べ替えを適用します。 'alpha'(名前で並べ替え)または関数(並べ替え関数のしくみについては、Array.prototype.sort()を参照)を使用できます。デフォルトでは、サーバーから返される順序が変更されません。

operationsSorter

各APIの操作リストにソートを適用します。 'alpha'(パスで英数字順に並べ替え)、 'method'(HTTPメソッドで並べ替え)、または関数(並べ替え関数のしくみについては、Array.prototype.sort()を参照)を使用できます。デフォルトでは、サーバーから返される順序が変更されません。

したがって、APIリストをアルファベット順に並べ替えるにはsorterapisSorterに更新し、各APIの操作リストを並べ替えるにはoperationsSorterを更新する必要があります。ペットショップのデモは、次に示すようにapisSorterに更新されました。

:( 作業デモ 、アルファベット順にソートされます)

window.swaggerUi = new SwaggerUi({

...

apisSorter : "alpha"
});

2.1.0より古いSwagger UIバージョンの場合

sorterパラメーターは、古いバージョンのSwagger UIにも関連しています。

SwaggerUiをインスタンス化するときにsorterパラメーターを使用できます。これは、Swagger-Ui index.htmlのJavaScriptで発生します。 ドキュメント から:

sorterは、APIリストにソートを適用します。 'alpha'(パスを英数字順にソートする)または 'method'(HTTPメソッドでオペレーションをソートする)にすることができます。デフォルトでは、サーバーから返される順序が変更されません。

window.swaggerUi = new SwaggerUi({

...

sorter : "alpha"
});
15
Anthony Neace
// 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]);    
  },
});
9
Hiddenben

受け入れられた答えは少し時代遅れです。新しいバージョンでは、次の方法で行われます。

window.swaggerUi = new SwaggerUi({

...

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

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")]);
            },
           ...
 });
0