Freigeben über


So rufen Sie REST-Endpunkte auf

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.