Die erste Anfrage per HTTP
In dieser Einführung lesen Sie mit PowerShell Daten über den Datendienst – zuerst über die OData-Oberfläche, dann über den eigenen Vertrag. Sie brauchen dafür etwa zehn Minuten und keine weitere Software.
Voraussetzungen
- ein laufender Datendienst und seine Adresse, hier
https://daten.example.com - ein Schlüssel mit einer Regel, die mindestens eine Tabelle lesen darf: ein persönlicher Schlüssel (
wkl_…) oder ein Dienstschlüssel; verlangt die Anmelderichtlinie für Ihren Schlüssel einen zweiten Faktor, verwenden Sie für diese Einführung einen davon ausgenommenen, nur lesenden Schlüssel - PowerShell 7 oder Windows PowerShell 5.1
Schritte
1. Den Schlüssel für die Sitzung bereitlegen
Geben Sie den Schlüssel ein, ohne dass er in der Befehlshistorie landet:
$h = @{ 'X-Api-Key' = (Read-Host 'Schlüssel') } $base = 'https://daten.example.com'
2. Prüfen, ob der Dienst antwortet
Invoke-RestMethod "$base/health/ready"
Die Antwort lautet Healthy. Dieser Aufruf braucht keine Anmeldung.
3. Die Datenbanken und Tabellen auflisten
(Invoke-RestMethod "$base/odata/v4/" -Headers $h).value | Format-Table name, url (Invoke-RestMethod "$base/odata/v4/fachdaten/dbo/" -Headers $h).value | Select-Object -First 5 | Format-Table name, kind
Die erste Liste nennt die Aliasse, die Sie lesen dürfen, die zweite die Tabellen und Sichten eines
Schemas (kind = EntitySet). Setzen Sie für fachdaten und dbo die Namen aus Ihren Listen ein.
4. Zeilen lesen, filtern und zählen
$r = Invoke-RestMethod "$base/odata/v4/fachdaten/dbo/Artikel?`$top=2&`$count=true&`$filter=Gruppe eq 'S'" -Headers $h $r.'@odata.count' $r.value | Format-Table
@odata.count nennt, wie viele Zeilen die Bedingung insgesamt trifft; value enthält die ersten zwei.
Der Dienst übersetzt $filter in SQL und lässt die Datenbank filtern. Der Gravis (Backtick) vor $ hindert
PowerShell daran, $top als Variable zu lesen.
5. Dieselben Zeilen über den eigenen Vertrag lesen
$c = Invoke-RestMethod "$base/api/v1/cf/fachdaten/tables/Artikel.json?`$top=2&`$count=true" -Headers $h $c | Select-Object rowCount, window, totalCount, nextLink $c.data | Format-Table
Der eigene Vertrag antwortet mit data, rowCount, window und – wegen $count=true – totalCount.
Ohne $top liefert er ein Fenster der voreingestellten Größe und, wenn weitere Zeilen folgen, einen
nextLink.
Ergebnis
Sie haben dieselben Daten über beide Oberflächen gelesen. Mit einem Schlüssel ohne Leserecht für eine
Tabelle antwortet der Dienst 404 – genau wie für eine Tabelle, die es nicht gibt.
Nächste Schritte
- HTTP: eigener Vertrag (Referenz) – Schreiben, Abfrageoptionen, Antwort- und Fehlerform
- HTTP: OData v4 (Referenz) – Schemadokument, Gruppieren, Folgeseiten
- HTTP: Anmeldung (Referenz) – Windows-Konto, SQL-Anmeldung, zweiter Faktor