Angenommen , ich habe eine maschinenlesbare Beschreibung (z. B. in WADL , Swagger oder RAML ) einer REST-API, die eine Schnittstelle zu einer Datenbank bereitstellt.
Meine Benutzer senden Anfragen zur zugrunde liegenden Datenbank in Form von SQL oder einer ähnlichen Abfragesprache. Ich kann jedoch nicht direkt auf die Datenbank zugreifen, sondern nur über die REST-API.
Welchen Ansatz würden Sie wählen, um ein System zu erstellen (vorzugsweise halbautomatisch aus der Beschreibung), das solche SQL-Abfragen in eine Folge von Anforderungen an eine bestimmte REST-API übersetzt?
Wie würden Sie ein solches Problem darstellen? Gibt es Algorithmen, theoretische Rahmenbedingungen oder Werkzeuge, die helfen können?
Die REST-API unterstützt:
- schreibgeschützte Operationen, dh nur
SELECT
SQL-Abfragen - XPartial Projektionen (zB
/persons?fields=firstname,lastname
) - RSQL- Einschränkungen (
/persons?query=firstname==John;department.code==42
siehe andere Beispiele ).
Einige Referenzen zwischen Tabellen (Fremdschlüssel) werden in der REST-API als Attribute dargestellt (wie Person.department
im obigen Beispiel für Einschränkungen), einige Referenzen werden jedoch als Unterressourcen dargestellt (z /persons/{userName}/projects
. B. ). Dies bedeutet, dass für einige Anfragen ein "Plan" erstellt werden muss, der im Hinblick auf REST-Anforderungen beantwortet werden soll.
Beispiel: Die Abfrage nach "Namen aktiver Projekte von Chuck Norris" würde bedeuten:
/persons?query=firstname==Chuck;lastname==Norris
- Erhalten
userName
von Ergebnis /projects/{userName}?fields=name&query=state==ACTIVE