Diciamo che ho una descrizione leggibile dalla macchina (come in WADL , Swagger o RAML ) di un'API REST che fornisce un'interfaccia a un database.
I miei utenti inviano query sul database sottostante in forma di SQL o linguaggio di query simile. Tuttavia, non posso accedere direttamente al database, solo tramite l'API REST.
Quale approccio sceglieresti per costruire (preferibilmente semi-automaticamente dalla descrizione) un sistema che traduca tali query SQL in una sequenza di richieste a una data API REST?
Come rappresenti questo problema? Esistono algoritmi, quadri teorici o strumenti che possono aiutare?
L'API REST supporta:
-  operazioni di sola lettura, ovvero solo   
SELECTquery SQL - 
 XPartial  proiezioni (ad esempio   
/persons?fields=firstname,lastname) - 
 RSQL  vincoli (   
/persons?query=firstname==John;department.code==42, vedi altri esempi ). 
 Alcuni riferimenti tra tabelle (chiavi esterne) sono rappresentati come attributi nell'API REST (come   Person.department    nell'esempio dei vincoli sopra), ma alcuni riferimenti sono rappresentati come subresource (ad esempio   /persons/{userName}/projects   ). Ciò significa che alcune query richiedono di escogitare "un piano" per rispondere in termini di richieste REST. 
E.g .: Query per "nomi di progetti attivi di Chuck Norris" si tradurrebbe in:
- 
   
/persons?query=firstname==Chuck;lastname==Norris -  Ottieni   
userNamedal risultato -    
/projects/{userName}?fields=name&query=state==ACTIVE