web-dev-qa-db-ja.com

Swaggerは既存のエクスプレスルートに基づいてyamlを自動生成できますか?

私は既存のAPIを継承し、それをswaggerで文書化したいと思いますが、その完全な範囲はまだわかりません。 Swagger(または別のミドルウェア/ツール)は、既存の高速ルートに基づいて、自動的にyaml(swagger用)を生成できますか?

私が他の質問で見たものについては、これはほとんど手作業であるように見えますが、ここの誰かがこれを回避する方法を見つけたかどうかを再確認しています。

40
Manatax

Swagger jsonの両方を自動生成し、ビルドを支援したAPIのためにそれを手動で作成した経験があります。ここに私の経験に基づいた両方の長所/短所があります。

Swagger自動ドキュメント生成:

Swagger-uiと組み合わせてswagger-node-expressモジュールを使用しました。 https://www.npmjs.com/package/swagger-node-express
https://github.com/swagger-api/swagger-ui

長所

文書化が非常に簡単です。リソース定義の上に数行追加するだけで、モジュール(json)が自動的に生成されます。

短所

このパッケージを使用するとき、Expressをまっすぐに使用しなくなりました。ルート定義はSwaggerモジュールで定義する必要があり、これによりVanilla Expressから離れます。

Swaggerマニュアルドキュメントの生成:

Swagger-uiをプロジェクトに追加し、マニュアルを手動で作成しました。
https://github.com/swagger-api/swagger-ui

長所

このアプローチは、ドキュメントをExpressフレームワークから分離します。 Expressエンドポイントは通常の記述どおりに記述され、SwaggerドキュメントはExpressフレームワークとは別に定義されます。純粋なエクスプレスを記述できます。

短所

あなたが手動でyamlまたはjsonを書いて変更しているという事実のために、ドキュメントの変更はもう少し退屈になります。リソースの上にある数行のコードを更新するよりも少し難しいです。また、このアプローチは、完全に手動で入力されるため、ドキュメントの誤植やエラーが発生しやすくなります。

Swaggerドキュメントを手動で作成する場合は、以下のswaggerエディターを使用して、手動ドキュメントを検証してください。
http://editor.swagger.io/#/

結論

このAPIプロジェクトでは、swagger-node-expressパッケージを使用してドキュメントを自動生成することから始めました。ただし、Expressのすべての機能を使用するには、エクスプレスライブラリからswaggerドキュメントを分離することが重要であることに気付きました。 Swaggerドキュメントと、アプリで使用するExpress Webフレームワークの両方を完全に制御できるように、ドキュメントを手動で記述することをお勧めします。

48
Mike

はい!!!。この素晴らしいプロジェクト TypeScript-test を使用できます。 サンプルアプリ です。クローンを作成し、npm inpm run swaggerを実行して、/ dist/swagger.jsonに移動します。できたSwagger yamlとjsonは、高速ルートに基づいて生成されます!

2

オプションがあります:すべてのリクエストとレスポンスを分析し、仕様を生成するミドルウェアを埋め込むことができます: https://github.com/mpashkovskiy/express-oas-generator

次に、アプリのSwagger UIで http:// Host:port/api-docs のように使用できます

0
mpashkovskiy