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.
Der Daten-API-Generator (DAB) bietet eine RESTful-Web-API, mit der Sie auf Tabellen, Ansichten und gespeicherte Prozeduren aus einer verbundenen Datenbank zugreifen können. Jedes verfügbar gemachte Datenbankobjekt wird als Entität in der Laufzeitkonfiguration definiert.
Standardmäßig hostet DAB REST-Endpunkte unter:
https://{base_url}/api/{entity}
Hinweis
Bei allen Pfadkomponenten und Abfrageparametern wird die Groß-/Kleinschreibung beachtet.
Im Daten-API-Generator unterstützte Schlüsselwörter
| Konzept | PAUSE | Purpose |
|---|---|---|
| Projektion | $select | Auswählen der zurückzugebenden Felder |
| Filterung | $filter | Einschränken von Zeilen nach Bedingung |
| Sortieren | $orderby | Definieren der Sortierreihenfolge |
| Seitengröße | $first | Einschränken der Elemente pro Seite |
| Fortsetzung | $after | Weiter von der letzten Seite |
Grundstruktur
Um eine REST-API aufzurufen, erstellen Sie eine Anforderung mit diesem Muster:
{HTTP method} https://{base_url}/{rest-path}/{entity}
Beispiel zum Lesen aller Datensätze aus der book Entität:
GET https://localhost:5001/api/book
Die Antwort ist ein JSON-Objekt mit einem value Array. Paginierungs- und Fehlerinformationen werden nur angezeigt, wenn zutreffend.
Hinweis
Standardmäßig gibt DAB bis zu 100 Elemente pro Abfrage zurück, sofern nicht anders konfiguriert (runtime.pagination.default-page-size).
GET https://localhost:5001/api/book
Erfolg:
{
"value": [
{ "id": 1, "title": "Dune", "year": 1965, "pages": 412 },
{ "id": 2, "title": "Foundation", "year": 1951, "pages": 255 }
]
}
Erfolg mit Paginierung:
{
"value": [
{ "id": 1, "title": "Dune", "year": 1965, "pages": 412 },
{ "id": 2, "title": "Foundation", "year": 1951, "pages": 255 }
],
"nextLink": "https://localhost:5001/api/book?$after=WyJCb29rMiJd"
}
Leeres Ergebnis (Element nicht gefunden):
{
"value": []
}
Hinweis
Eine GET-Anforderung für einen nicht vorhandenen Primärschlüssel gibt 200 OK mit einem leeren value-Array zurück, nicht 404 Not Found. Überprüfen Sie, ob ein Array leer ist, um festzustellen, ob das Element existiert.
Abfragetypen
Jede REST-Entität unterstützt sowohl das Lesen von Sammlungen als auch von einzelnen Datensätzen.
| Operation | Beschreibung |
|---|---|
GET /api/{entity} |
Gibt eine Liste von Datensätzen zurück. |
GET /api/{entity}/{primary-key-column}/{primary-key-value} |
Gibt einen Datensatz anhand eines Primärschlüssels zurück. |
Beispiel für die Rückgabe eines Datensatzes:
GET /api/book/id/1010
Beispiel, in dem viele zurückgegeben werden:
GET /api/book
Filterergebnisse
Verwenden Sie den $filter Abfrageparameter, um einzuschränken, welche Datensätze zurückgegeben werden.
GET /api/book?$filter=title eq 'Foundation'
Diese Abfrage gibt alle Bücher zurück, deren Titel "Foundation" entspricht.
Filter können logische Operatoren für komplexere Abfragen enthalten:
GET /api/book?$filter=year ge 1970 or title eq 'Dune'
Weitere Informationen finden Sie in der $filter-Argumentreferenz.
Sortieren von Ergebnissen
Der $orderby Parameter definiert, wie Datensätze sortiert werden.
GET /api/book?$orderby=year desc, title asc
Dies gibt Bücher zurück, die nach year absteigend sortiert sind, dann nach title.
Weitere Informationen finden Sie in der $orderby-Argumentreferenz.
Einschränken der Ergebnisse {#first-and-after}
Der $first Parameter begrenzt, wie viele Datensätze in einer Anforderung zurückgegeben werden.
GET /api/book?$first=5
Dadurch werden die ersten fünf Bücher zurückgegeben, die standardmäßig nach Primärschlüssel sortiert sind.
Sie können auch $first=-1 verwenden, um die konfigurierte maximale Seitengröße anzufordern, die standardmäßig auf 100 Elemente festgelegt ist. Konfigurieren Sie diesen Grenzwert mithilfe von runtime.pagination.default-page-size in Ihrer Konfigurationsdatei.
Weitere Informationen finden Sie in der $first-Argumentreferenz.
Fortlaufende Ergebnisse
Verwenden Sie das Fortsetzungstoken aus der vorherigen Antwort mit $after, um die nächste Seite abzurufen.
GET /api/book?$first=5&$after={continuation-token}
Das $after Token gibt an, wo die letzte Abfrage beendet wurde.
Weitere Informationen finden Sie in der Referenz für das $after-Argument.
Feldauswahl (Projektion)
Verwenden Sie $select, um zu steuern, welche Felder in der Antwort enthalten sind.
GET /api/book?$select=id,title,price
Dies gibt nur die angegebenen Spalten zurück.
Wenn ein Feld fehlt oder nicht zugegriffen werden kann, gibt DAB zurück 400 Bad Request.
Weitere Informationen finden Sie in der $select-Argumentreferenz.
Ändern von Daten
Die REST-API unterstützt auch Erstellungs-, Aktualisierungs- und Löschvorgänge abhängig von Entitätsberechtigungen.
| Methode | Action |
|---|---|
POST |
Erstellen eines neuen Elements |
PUT |
Ersetzen eines vorhandenen Elements (oder Erstellen, falls nicht vorhanden) |
PATCH |
Aktualisieren eines vorhandenen Elements (oder Erstellen, falls nicht vorhanden) |
DELETE |
Entfernen eines Elements nach Primärschlüssel |
Von Bedeutung
Das Upsert-Verhalten (insert-if-missing) von PUT und PATCH funktioniert nur, wenn die Datenbank explizite Primärschlüsselwerte zulässt. Bei Tabellen mit automatisch generierten Schlüsseln (z. B. Spalten in SQL Server oder SERIAL in PostgreSQL) wird bei einem PUT oder PATCH zu einem nicht vorhandenen Schlüssel 404 Not Found zurückgegeben, da die Datenbank explizite Einfügungen in eine automatisch generierte Spalte ablehnt. Verwenden Sie POST, um Datensätze in Tabellen mit automatisch generierten Schlüsseln zu erstellen, oder nutzen Sie schlüsselloses PUT und PATCH, damit DAB den Schlüssel automatisch zuweisen kann.
Neuen Datensatz erstellen
Verwenden Sie POST, um ein neues Element zu erstellen.
POST https://localhost:5001/api/book
Content-Type: application/json
{
"id": 2000,
"title": "Leviathan Wakes",
"year": 2011,
"pages": 577
}
Vorhandenen Datensatz aktualisieren
Verwenden Sie PATCH, um bestimmte Felder eines vorhandenen Elements zu aktualisieren.
PATCH https://localhost:5001/api/book/id/2000
Content-Type: application/json
{
"id": 2000,
"title": "Leviathan Wakes",
"year": 2011,
"pages": 577
}
Löschen eines Datensatzes
Verwenden Sie DELETE, um ein Element nach Primärschlüssel zu entfernen.
DELETE https://localhost:5001/api/book/id/2000
Erweiterte REST-Pfade mit Unterverzeichnissen
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.
Entitäts-REST-Pfade können Schrägstriche enthalten, um URL-Segmente im Unterverzeichnisstil zu erstellen. Diese Konfiguration ermöglicht aussagekräftigere, hierarchische URL-Strukturen für Ihre API.
Konfigurieren Sie einen Unterverzeichnispfad in der Eigenschaft der Entität rest.path :
{
"entities": {
"ShoppingCartItem": {
"source": "dbo.ShoppingCartItem",
"rest": {
"path": "shopping-cart/item"
}
}
}
}
Diese Konfiguration führt zum Endpunkt:
GET /api/shopping-cart/item
DAB verwendet den längsten Präfixabgleich für routing, sodass spezifischere Pfade vor kürzeren Pfaden abgeglichen werden. Aus Sicherheitsgründen blockiert die Validierung Pfad-Traversalmuster (wie z. B. ..), umgekehrte Schrägstriche und prozentcodierte Trennzeichen.
Weitere Informationen finden Sie in der REST-Pfadkonfiguration.
Keyless PUT und PATCH für automatisch generierte Primärschlüssel
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.
Wenn alle Primärschlüsselspalten für eine Entität automatisch generiert werden (z. B. IDENTITY-Spalten in SQL Server), können Sie Anforderungen PUT und PATCH senden, ohne einen Primärschlüssel in der URL anzugeben. DAB weist den Schlüssel beim Einfügen automatisch zu.
PUT /api/Book
Content-Type: application/json
{
"title": "My New Book",
"publisher_id": 1234
}
Diese Anforderung erstellt einen neuen Book Datensatz mit einem automatisch generierten Primärschlüssel.
Regeln für schlüssellose Vorgänge
- Alle ausgelassenen Primärschlüsselspalten müssen automatisch generiert werden. Wenn keine ausgelassene Schlüsselspalte automatisch generiert wird, schlägt die Anforderung fehl.
- Bei zusammengesetzten Primärschlüsseln müssen Sie weiterhin alle nicht automatisch generierten Teile des Schlüssels in der URL angeben.
- Gespeicherte Prozeduren sind von diesem Feature nicht betroffen. Sie verwenden weiterhin ihre eigene Parameterbehandlung.
- Das OpenAPI-Dokument spiegelt schlüssellose Vorgänge auf dem Basisentitätspfad wider (z.B. ohne Schlüsselsegmente).
HTTP-Antwortkomprimierung
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.
DAB unterstützt die HTTP-Antwortkomprimierung, um Nutzlastgrößen zu reduzieren und Übertragungsgeschwindigkeiten zu verbessern. Konfigurieren der Komprimierung im runtime.compression Abschnitt Ihrer Konfigurationsdatei:
{
"runtime": {
"compression": {
"level": "optimal"
}
}
}
Verfügbare Komprimierungsebenen:
| Grad | Beschreibung |
|---|---|
optimal |
Ausgleichen des Komprimierungsverhältnisses und der Geschwindigkeit (empfohlen für die meisten Szenarien) |
fastest |
Priorisiert die Komprimierungsgeschwindigkeit gegenüber dem Verhältnis |
none |
Deaktiviert die Komprimierung. |
Weitere Informationen zum Konfigurieren der Komprimierung finden Sie in der Laufzeitkomprimierungskonfiguration.