2015-02-19 10 views
6

Ich recherchiere derzeit für eine elegante Art, für meine REST-API in der Entwicklung, Filter für GET-Anfragen auszugeben, die Sammlungen zurückgeben. Ich möchte Abfragen als "http://[...]?filter=expressions" ausdrücken, wo ich den Ausdrücke Teil auswerten werde. Ich habe das Gefühl, dass ein flexibler Ansatz die Notwendigkeit einer einfachen Query DSL auslösen würde? In der Nähe von einer guten formalen Spezifikation ich bisher gefunden istGibt es einen REST-API-Abfrage-Standard/DSL, um komplexe Filter in der GET-URL auszudrücken?

http://www.juniper.net/techpubs/en_US/junos-space-sdk/13.1/apiref/com.juniper.junos_space.sdk.help/html/reference/Commonbehav.html#step8

Ich habe mich gefragt, ob ANTLR das Werkzeug zu sehen ist? Aber da dies eine so häufige Notwendigkeit sein sollte, habe ich mich gefragt, ob es etwas REST-API-Abfrage-Standard-DSL etwas gibt?

etwas verwirrt Grüße und THX für Ihre Eingabe :)

+0

Afaik. Es gibt noch keine Standardlösung. – inf3rno

+1

Wenn Sie den Clients mit Meta-Daten nicht beschreiben möchten, wie Sie die Abfragestruktur aufbauen, dann können Sie URI-Vorlagen und so etwas wie Gil verwenden. Das ist der einfache, aber nicht so allgemeine Weg. Wir hatten ein Gespräch darüber mit anderen: http://lists.w3.org/Archives/Public/public-hydra/2014Sep/0041.html#start41 – inf3rno

Antwort

3

OData 4 (http://www.odata.org/) hat eine sehr vollständige Abfragesyntax und unterstützt das Datenmodell ER mit der Navigation, Filterung, Ausdrücke, usw. Die MSFT Azure AD Graph API basiert auf OData. Der einzige Nachteil ist, dass die komplette Spezifikation ziemlich tief ist. Es gibt einige Open-Source-Implementierungen, Apache Olingo (http://olingo.apache.org/) ist eine mit Unterstützung für Java-Clients und -Server. Es gibt auch andere.

+0

Vergessen zu erwähnen, OData ist ein OASIS-Standard (http: // www.oasis-open.org) und wurde kürzlich nach ISO/IEC JTC1 eingereicht. – Gil

1

Ich bin gerade auf QueryDSL gestoßen, die fließende Builder für Abfragen zu einer Reihe von Back-End-Technologien bietet.

Ich bin mir nicht sicher, ob mir die Idee, die fließenden Builder direkt den Abfrageparametern zuzuordnen, gefällt, aber dieser Ansatz wird in zwei blog posts beschrieben, die durch die QueryDSL site referenziert werden.

+0

Hallo Christopher, Danke für die Antwort. Wir haben uns schließlich dazu entschlossen, QueryDSL mit einer selbstdefinierten Grammatik zu kombinieren, die mit einem von ANTLR4 generierten Parser evaluiert wurde. Das Modul ist in Arbeit und wir werden es als OpenSource-Projekt veröffentlichen, sobald die Qualitätsstandards erfüllt sind :). Lustig genug, dass wir am Ende auch MVEL benutzt haben, aber lass es die Arbeit an geparsten Ergebnissen machen. –