Beschreibung OData Filter
OData steht für „Open Data Protocol“ und ist ein von Microsoft entwickeltes Protokoll, das die Erstellung und Konsumierung von datenzentrierten RESTful APIs erleichtert. Es wurde entwickelt, um den Austausch von strukturierten Daten zwischen Anwendungen verschiedener Plattformen zu erleichtern (z.B. Devextreme Grids, Excel). OData basiert auf gängigen Webtechnologien wie HTTP, AtomPub und JSON und definiert einen Satz von Konventionen für die Erstellung von RESTful APIs, die den Zugriff auf und die Manipulation von Daten über das Internet ermöglichen.
Folgender Eintrag filtert alle Konten nach Finanzkonto
https://domain:port/api/Accounting/Accounts?top=10&filter=Type eq 'FinanceAccount'
Anzahl Datensätze - Paginierung
Standardmäßig werden bei einer Abfrage einer GET-Route, die OData fähig ist, immer alle Datensätze geliefert. Möchte man die Anzahl beschränken muss man das mittels „top“ realisieren.
Dazu ein Beispiel.
Die Ergebnismenge wird in Seiten zu je 20 Datensätzen eingeteilt und die 5. Seite abgerufen.
Url:
GET https://domain:port/api/Accounting/Accounts?top=20&skip=80
Welche Query Optionen unterstützen wir?
Select
Gibt nur die angegebene Spalten des Objekts zurück.
https://domain:port/api/Accounting/Accounts?select=Account,AccountNumber,Name
{ "value": [ { "Account": "10", "AccountNumber": 10, "Name": "Entg.erwor.Konzessionen gew.Schutzrechte" }, { "Account": "100", "AccountNumber": 100, "Name": "Fabrikbauten" }, { "Account": "1000", "AccountNumber": 1000, "Name": "Kasse" } ] }
Filter
Gibt die Datenmenge gefiltert nach dem angegebenen Ausdruck zurück.
https://domain:port/api/Accounting/Accounts?filter=Type eq 'FinanceAccount'
{ "value": [ { "Account": "1000", "AccountNumber": 1000, "Type": "FinanceAccount" }, { "Account": "1010", "AccountNumber": 1010, "Type": "FinanceAccount" }, { "Account": "1020", "AccountNumber": 1020, "Type": "FinanceAccount" } ] }
Order by
Gibt die, nach der angegebenen Spalte sortierten, Datenmenge zurück.
https://domain:port/api/Accounting/Accounts?orderby=Account
{ "value": [ { "Account": "10", "AccountNumber": 10, "Type": "Debtor" }, { "Account": "100", "AccountNumber": 100, "Type": "Debtor" }, { "Account": "1000", "AccountNumber": 1000, "Type": "Debtor" } ] }
Count
Gibt im Objekt zusätzlich aus wie viele Datensätze gefunden wurden.
https://domain:port/api/Accounting/Accounts?count=true
{ "@odata.count": 2107, "value": [...] }
Top
Begrenzt die Datenmenge auf die gegebene Anzahl. Mit Skip und Top gemeinsam lässt sich Paging realisieren.
https://domain:port/api/Accounting/Accounts?top=3
{ "value": [ { "Account": "10", "AccountNumber": 10, "Type": "Debtor" }, { "Account": "100", "AccountNumber": 100, "Type": "Debtor" }, { "Account": "1000", "AccountNumber": 1000, "Type": "Debtor" } ] }
Skip
Überspringt die gegebene Anzahl Datensätze der Datenmenge. Mit Skip und Top gemeinsam lässt sich Paging realisieren.
https://domain:port/api/Accounting/Accounts?skip=10
{ "value": [ { "Account": "10007", "AccountNumber": 10007, "Type": "Debtor" }, { "Account": "10008", "AccountNumber": 10008, "Type": "Debtor" }, { "Account": "10009", "AccountNumber": 10009, "Type": "Debtor" } ] }