Ich habe eine C # ASP.NET-WebAPI-Anwendung mit API-Dokumentation, die automatisch mit Swashbuckle generiert wird . Ich möchte in der Lage sein, bestimmte Methoden in der Dokumentation wegzulassen, aber ich kann anscheinend nicht herausfinden, wie ich Swagger anweisen kann, sie nicht in die Swagger-UI-Ausgabe aufzunehmen.
Ich habe das Gefühl, dass dies mit dem Hinzufügen eines Modell- oder Schemafilters zu tun hat , aber es ist nicht klar, was zu tun ist, und die Dokumentation scheint nur Beispiele dafür zu enthalten, wie die Ausgabe für eine Methode geändert und nicht vollständig aus der Ausgabe entfernt werden kann.
Danke im Voraus.
Jemand hat die Lösung auf Github gepostet, also werde ich sie hier einfügen. Alle Credits gehen an ihn. https://github.com/domaindrivendev/Swashbuckle/issues/153#issuecomment-213342771
Erstellen Sie zuerst eine Attributklasse
Erstellen Sie dann eine Dokumentfilterklasse
Fügen Sie dann in der Swagger Config-Klasse diesen Dokumentfilter hinzu
Der letzte Schritt besteht darin, dem Controller oder der Methode, für die Swashbuckle keine Dokumentation generieren soll, das Attribut [HideInDocsAttribute] hinzuzufügen.
quelle
Sie können "Operationen" aus dem Swagger-Dokument entfernen, nachdem es mit einem Dokumentfilter generiert wurde. Setzen Sie das Verb einfach auf
null
(es gibt jedoch auch andere Möglichkeiten, dies zu tun).Das folgende Beispiel erlaubt nur
GET
Verben - und stammt aus dieser Ausgabe .und in deiner Prahlerkonfiguration:
quelle
path.get = null;
Dadurch wird der Pfad auch dann nicht entfernt, wenn Sie einen Kommentar abgeben. Infolgedessen werden diese Pfade weiterhin in die Swagger-Datei aufgenommen, jedoch nur ohne die Details. Es ist möglicherweise besser, dasApiExplorerSettingsAttribute
in Ihre Antwort aufzunehmen, wie Sie es in Ihrer ursprünglichen Antwort auf GitHub erwähnt haben. Durch die Verwendung von ApiExplorerSettings wird möglicherweise auch vermieden, dass Typinformationen zurschemes
Liste der Swagger-Datei hinzugefügt werden .Ich würde es vorziehen, die Wörterbucheinträge für Pfadelemente vollständig zu entfernen:
Mit diesem Ansatz würden Sie keine "leeren" Elemente in der generierten swagger.json-Definition erhalten.
quelle
Machen Sie einen Filter
Machen Sie ein Attribut
Bewerben Sie sich in startup.cs
Fügen Sie den Attributen und Controllern, die Sie in Swagger JSON aufnehmen möchten, das Attribut [SwaggerTag] hinzu
quelle
Kann jemandem helfen, aber während der Entwicklung (Debugging) möchten wir ganze Controller und / oder Aktionen verfügbar machen und diese dann während der Produktion ausblenden (Release Build).
quelle
Basierend auf @spottedmahns Antwort . Meine Aufgabe war umgekehrt. Nur die erlaubten anzeigen.
Frameworks: .NetCore 2.1; Prahlerei: 3.0.0
Attribut hinzugefügt
Und implementieren Sie einen benutzerdefinierten IDocumentFilter
ConfigureServices- Code:
quelle
füge eine Zeile hinzu SwaggerConfig c.DocumentFilter ();
quelle
Fügen Sie dies zusätzlich zu Ihren Methoden hinzu, die Sie weglassen möchten.
quelle