Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Die in diesem Abschnitt beschriebene Funktionalität des Daten-API-Generators 2.0 befindet sich derzeit in der Vorschau und kann sich vor der allgemeinen Verfügbarkeit ändern. Weitere Informationen finden Sie unter Neuigkeiten in Version 2.0.
Die OpenAPI-Spezifikation ist ein sprachunabhängiger Standard für das Dokumentieren von HTTP-APIs. Der Daten-API-Generator unterstützt OpenAPI durch:
- Generieren von Metadaten für alle REST-fähigen Entitäten, die in der Laufzeitkonfiguration definiert sind
- Kompilieren dieser Metadaten in ein gültiges OpenAPI-Schema
- Verfügbarmachen des Schemas über eine visuelle UI (Swagger) oder als serialisierte JSON-Datei
- Filtern des Schemas, um nur HTTP-Methoden und Felder anzuzeigen, auf die für eine bestimmte Rolle zugegriffen werden kann
OpenAPI-Beschreibungsdokument
Der Daten-API-Generator generiert ein OpenAPI-Beschreibungsdokument mit der Laufzeitkonfiguration und den Datenbankmetadaten für jede REST-fähige Entität.
Das Schema wird mit dem OpenAPI.NET SDK erstellt und entspricht der OpenAPI Specification v3.0.1. Es wird als JSON-Dokument ausgegeben.
Sie können auf das OpenAPI-Dokument zugreifen unter:
GET /{rest-path}/openapi
Hinweis
Standardmäßig ist rest-pathapi. Dieser Wert kann konfiguriert werden. Details finden Sie in der REST-Konfiguration .
Berechtigungsbewusste OpenAPI
Ab DAB 2.0 spiegelt das OpenAPI-Dokument die tatsächlichen Berechtigungen wider, die für jede Entität konfiguriert sind. Anstatt jede mögliche HTTP-Methode zu dokumentieren, zeigt das generierte Schema nur die Methoden und Felder an, auf die eine bestimmte Rolle zugreifen kann.
Zuordnung von Berechtigungen zu HTTP-Methoden
DAB übersetzt Entitätsberechtigungen in die Sichtbarkeit der HTTP-Methode im OpenAPI-Dokument:
| Berechtigungsvorgang | GEZEIGTe HTTP-Methoden |
|---|---|
read |
GET |
create |
POST |
create + update |
PUT, PATCH |
delete |
DELETE |
Wenn die anonymous Rolle beispielsweise nur read Berechtigung für die Book Entität hat, zeigt das OpenAPI-Dokument für die anonyme Rolle nur GET Operationen für /api/Book. Die POST, PUT, PATCH und DELETE-Vorgänge werden vollständig weggelassen.
Filterung auf Feldebene
Wenn Berechtigungen die Regeln auf Feldebene include oder exclude enthalten, bezieht das OpenAPI-Schema diese Einschränkungen ein. Nur Felder, auf die die Rolle zugreifen kann, werden in den Anforderungs- und Antwortschemas angezeigt. Mit dieser Filterung erhalten Verbraucher ein genaues Bild davon, was die API für ihre Rolle akzeptiert und zurückgibt.
Rollenspezifische OpenAPI-Pfade
DAB stellt rollenspezifische OpenAPI-Endpunkte bereit, damit Sie das Schema für jede konfigurierte Rolle überprüfen können:
GET /{rest-path}/openapi
GET /{rest-path}/openapi/anonymous
GET /{rest-path}/openapi/authenticated
GET /{rest-path}/openapi/admin
Der Basispfad /openapi gibt die anonyme Standardansicht zurück. Jeder rollenspezifische Pfad gibt ein Schema zurück, das auf die Berechtigungen dieser Rolle gefiltert ist.
Von Bedeutung
Rollenspezifische OpenAPI-Pfade (/openapi/{role}) sind nur im Entwicklungsmodus verfügbar. Im Produktionsmodus sind diese Endpunkte deaktiviert, um die Rollenaufzählung zu verhindern. Nur der Basispfad /openapi ist im Produktionsmodus verfügbar.
Hinweis
Ein rollenspezifischer Endpunkt gibt zurück 404 Not Found , wenn die Rolle keine Entitätsberechtigungen hat, die an einer beliebigen Stelle in der Laufzeitkonfiguration konfiguriert sind. Nur Rollen mit mindestens einem permissions Eintrag für mindestens eine Entität generieren ein OpenAPI-Dokument.
Beispiel
Berücksichtigen Sie diese Berechtigungskonfiguration:
{
"entities": {
"Book": {
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "read",
"fields": { "include": ["id", "title", "year"] }
}
]
},
{
"role": "authenticated",
"actions": ["create", "read", "update", "delete"]
}
]
}
}
}
Mit dieser Konfiguration:
-
/api/openapi/anonymouszeigt nurGET /api/Bookmit Antwortfeldernid,titleundyear. -
/api/openapi/authenticatedzeigt dieGET,POST,PUT,PATCHundDELETEVorgänge auf/api/Bookmit allen Feldern.
Swagger-Benutzeroberfläche
Swagger UI stellt eine interaktive, webbasierte Ansicht der API basierend auf dem OpenAPI-Schema bereit.
Im Development Modus macht der Daten-API-Generator die Benutzeroberfläche von Swagger verfügbar unter:
GET /swagger
Dieser Endpunkt ist nicht unter rest-path geschachtelt, um Konflikte mit benutzerdefinierten Entitäten zu vermeiden.