Today’s release of ql.io 0.5 includes the following changes:
- Enable caching on ql.io response. You can add
using headersclause to routes to add arbitrary response headers, as inreturn 'hello' via route '/hello' using method get using headers 'Cache-Control' = 'max-age=3600'; - [Experimental] Enable caching of responses from APIs for select statements.
create tablestatements can now include anexpires <interval>clause to specify an interval for caching responses ofselectstatements, as increate table auto.compute.key on select get from 'http://a.uri.net' ... expires 10; - Process gzip/deflate encoded responses from upstream servers.
- Support
Content-Encodingfor incoming requests and gzip/deflate encode responses. - Several bug fixes to maintain hierarchical logging of script execution. You can handle events emitted by the engine to log script execution flow. Watch this blog for an example soon.
- Factor out cluster management to a new module cluster2 to support deployments on CloudFoundry and Heroku.
- New URI
/apito navigate tables and routes - see En Route for details. - Support
deletestatements. - Upgrade CodeMirror to 2.22 to resolve some quirks in the console UI.
- Add a page to show all installed npm packages. Try http://
: /deps (or http://localhost:3001/deps). - Support custom xml2json convertors to enable clients interop with legacy XML APIs.
- Recover shutdown/stop from extraneous pid files.
- Simplify response decoding. In stead of setting encoding on the response, collect buffers into array, and then decode in the default impl of ‘parse response’.
- Removed /in-flight requests api.
- Enable numbers in
inclause and args of udfs - Export version from each module. You can find version of a module using
require('ql.io-<somemodule>').version. - Include version number in
User-AgentandServerheaders. - Support scatter-gather for requests with bodies by adding a
foreach 'param'for theusing bodyTemplatecluase. This allows scripts to batchup POST and PUT requests. - Support ejs body templates.
- Skip files that don’t end with
.ql. - “/ecv” check returns network ip instead of loopback address
- Let the engine allow a monkey patch to parse the response. Useful to process binary formats like avro.