web-dev-qa-db-ja.com

Swagger UIからSwagger JSON / YAMLファイルをエクスポートする方法は?

Swagger定義ファイル(JSONまたはYAMLファイルである必要があります)をエクスポートするにはどうすればよいですか?私はそのようなことを求められており、Swaggerについては大まかな知識しかありません。

http://example.com//swagger/ui/index#!のようなエンドポイントがあります(スクリーンショットは実際のエンドポイントではありませんが、投稿できません)。

enter image description here

バージョンはapi version: v1です。

表示できる[エクスポート]ボタンはありません。それで、どうやってそれをエクスポートしますか?

20
sashoalm

API定義のURLはSwagger UIのトップバーに表示されます-例では

/v2/api-docs?group=full-petstore-api

したがって、完全なURLは

http://localhost:8080/v2/api-docs?group=full-petstore-api


Swagger UIの新しいバージョンでは、多くの場合、API定義へのリンクがAPIタイトルの下に表示されるため、リンクを右クリックして[名前を付けて保存]を使用できます。

Link to API definition in Swagger UI 3.x


Swagger UIにAPI定義への可視リンクがない場合は、ページソースを表示し、次のようなurlパラメーターを探します。

const ui = SwaggerUIBundle({
  url: "https://petstore.swagger.io/v2/swagger.json",     // <-------
  dom_id: '#swagger-ui',


urlが表示されない場合、またはurlがコード式である場合は、ブラウザーの開発ツールを開き、Networkタブに切り替えますキャッシュを無効にします。次に、ページを更新し、HTTP要求の中でAPI定義ファイル(swagger.jsonswagger.yamlapi-docsまたは類似のもの)を検索します。リストを絞り込むには、XHRでフィルタリングできます。

Finding the Swagger file on the Network tab of browser dev tools

37
Helen

JSONは、特にSwaggerバージョン2.0向けに、ドキュメント内でインライン化することもできます。 @Helenの答えを歩いても何も見つからない場合は、これを試してみてください。

  1. ページのソースを表示
  2. "swagger"または"spec"を検索します

次のような<script type="application/json">タグが表示されている場合、これは実質的にswagger.jsonコンテンツです。 <script>タグ内のすべてをコピーして、swagger.jsonという名前のファイルに保存すると、準備が整います。

<script id="swagger-data" type="application/json">
{"spec":{"definitions":{},"info":{},"paths":{},"schemes":[],"swagger":"2.0"}}
</script>
3
Kevin Leary

私はDjango Rest Frameworkを使用しています(そのためpip package Django-rest-swagger==2.2.0)。上記の答えは十分ではありませんでした。次の2つのオプションがありました。

1)開発者ツールを使用してページのソースを表示します。 http://localhost:8000/docs/エンドポイントをヒットすると、次のように表示されます。

enter image description here

docs/エンドポイントはDjangoで設定されているため、異なる場合があります。その詳細を掘り下げると、(Chromeの)[応答]タブに移動し、下にスクロールして実際のJSONを見つけることができます。 window.drsSpecの値です

enter image description here

2) (https://github.com/marcgibbons/Django-rest-swagger/issues/59 で提案されているように、代替の(そしておそらくより簡単な)アプローチは、エンドポイントに?format=openapiを追加することです=

これにより、必要なJSONが直接吐き出されます。 swaggerフィールドをopenapiに変更してPostmanにインポートしましたが、これは少しハックのようですが、動作しましたか???????? ‍♂️

2
s g

既に回答済みで正しいものですが、詳細なバージョンを投稿するつもりでした。これがお役に立てば幸いです。

  1. Swagger UIにフィードするswagger jsonファイルがある場合は、.yamlファイルを生成するには、エディターでjsonをコピーアンドペーストしてyamlファイルをダウンロードします。これは簡単な方法です

リンク: https://editor.swagger.io/#

  1. これで、swagger jsonファイルがない2番目の方法は、次の手順が役立ちます。

Swagger UIを開き、検査(Shift + Ctrl + i)、ページを更新すると、以下のようなタブが表示されます

enter image description here

XHRまたはNetworkタブの下のAllタブを選択し、ファイルapi-doc?group = *およびサブタブresponseをクリックします。 * ap-doc?group。**ファイルのコンテンツをコピーし、同じエディターリンクを使用してyamlファイルに変換します

リンク: https://editor.swagger.io/#

1
Yashaswi N P