Wie kann ich eine Swagger-Definitionsdatei exportieren (es sollte sich um eine JSON- oder YAML-Datei handeln)? Ich werde danach gefragt und ich habe nur flüchtiges Wissen über Swagger.
Wir haben einen Endpunkt, der aussieht wie http://example.com//swagger/ui/index#!
das sieht so aus (der Screenshot ist jedoch nicht unser eigentlicher Endpunkt, das kann ich nicht posten):
Die Version ist api version: v1
.
Es gibt keine Schaltfläche "Exportieren", die ich sehen kann. Wie exportiere ich es?
Die URL der API-Definition wird in der oberen Leiste der Swagger-Benutzeroberfläche angezeigt - in Ihrem Beispiel
/v2/api-docs?group=full-petstore-api
So scheint die vollständige URL zu sein
http://localhost:8080/v2/api-docs?group=full-petstore-api
In neueren Versionen von Swagger UI wird der Link zur API-Definition häufig unter dem API-Titel angezeigt, sodass Sie mit der rechten Maustaste auf den Link klicken und Speichern unter.
Wenn Ihre Swagger-Benutzeroberfläche keinen sichtbaren Link zur API-Definition enthält, zeigen Sie die Seitenquelle an und suchen Sie nach dem Parameter url
, z.
const ui = SwaggerUIBundle({
url: "https://petstore.swagger.io/v2/swagger.json", // <-------
dom_id: '#swagger-ui',
Wenn Sie den url
nicht sehen oder wenn url
ein Codeausdruck ist, öffnen Sie die Browser-Entwicklungstools, wechseln Sie zur Registerkarte Netzwerk und Deaktivieren Sie die Zwischenspeicherung. Aktualisieren Sie dann die Seite und suchen Sie nach der API-Definitionsdatei (swagger.json
, swagger.yaml
, api-docs
oder ähnlich) unter HTTP-Anfragen. Sie können nach XHR filtern, um die Liste einzugrenzen.
Der JSON kann auch in das Dokument eingefügt werden, insbesondere für Swagger Version 2.0. Wenn Sie nach dem Durchgehen der Antwort von @ Helen nichts gefunden haben, probieren Sie es aus:
"swagger"
Oder "spec"
Wenn Sie ein <script type="application/json">
- Tag mit etwas ähnlichem wie dem folgenden sehen, ist dies effektiv Ihr swagger.json
- Inhalt. Kopieren Sie alles in die Tags <script>
Und speichern Sie es in einer Datei mit dem Namen swagger.json.
<script id="swagger-data" type="application/json">
{"spec":{"definitions":{},"info":{},"paths":{},"schemes":[],"swagger":"2.0"}}
</script>
Ich verwende Django Rest Framework (also pip
package Django-rest-swagger==2.2.0
) und die obigen Antworten waren nicht wirklich ausreichend. Es gab zwei Möglichkeiten:
1) Zeigen Sie die Seitenquelle mit Entwicklertools an. Wenn ich mein http://localhost:8000/docs/
Endpunkt sehe ich:
Das docs/
Endpunkt wurde in Django konfiguriert, daher kann es für Sie anders sein. Wenn ich mich mit den Details befasse, kann ich zur Registerkarte "Antwort" (in Chrome) gehen und nach unten scrollen, um den tatsächlichen JSON zu finden. Es ist der Wert in window.drsSpec
2) Der alternative (und vielleicht einfachere) Ansatz ist das Hinzufügen von ?format=openapi
zu meinem Endpunkt, wie in https://github.com/marcgibbons/Django-rest-swagger/issues/59
Dadurch wird der benötigte JSON-Code direkt ausgespuckt. Ich habe es in Postman importiert, indem ich das Feld swagger
in openapi
geändert habe, was ein wenig hacky zu sein scheint, aber es hat funktioniert ???????? ♂️
Obwohl es bereits beantwortet wurde und es das richtige ist, dachte ich, ich werde die sehr detaillierte Version davon posten. Hoffe, das hilft,
link: https://editor.swagger.io/#
Öffnen Sie die Swagger-Benutzeroberfläche, überprüfen Sie (Umschalt + Strg + i), aktualisieren Sie die Seite und Sie erhalten die folgenden Registerkarten
Wählen Sie [~ # ~] xhr [~ # ~] oder Alle unter Netzwerk , überprüfen Sie die Datei api-doc? group = * und klicken Sie auf die Unterregisterkarte response . * Kopieren Sie nun den Inhalt der Datei ap-doc? Group. ** und verwenden Sie denselben Editor-Link, um in eine yaml-Datei zu konvertieren