eBay's ql.io is an "SQL" for web APIs
eBay has announced ql.io, a new domain specific language which combines SQL, JSON and procedural elements to create a compact language for making HTTP request that retrieve data, join the results of those requests, or generate responses. The developers do point out that, although inspired by SQL, ql.io is not SQL; ql.io is aimed at client apps which may need to combine data from multiple APIs in a single operation, a process commonly known as a mashup.
This mashup process can be a complex issue for client applications as it requires the developers to focus on writing code that performs the requests in the right order, handles interdependencies and works out how to efficiently perform the task in parallel. To help address this issue, ql.io offers a runtime which can act as a gateway or proxy for those complex queries, queries which can themselves be expressed in the ql.io declarative scripting language. A client application needs only to call the appropriately constructed script through the script's own HTTP API or WebSocket interface and the ql.io system will use its resources to perform the required steps to return a result as quickly as possible, making the client application appear more responsive and robust.
The ql.io developers say in their announcement that the system should ease a number of "pain points", reducing the number of lines of code needed to perform a query and in turn reducing developer time needed, and reducing the number of queries and requests that take place between the client application and the servers by condensing the data requested to only essential fields. Ql.io does not set out to replace HTTP API frameworks though: it is designed to simplify the aggregation of existing and new HTTP APIs. A flexible deployment model means it can either be positioned close to the API servers, close to the client, or as part of the client, depending on where the the "network costs" are highest in an application.