A fast and performant proxy and aggregator for querying multiple instances of an API spread across globally distributed data centers.
- CurryProxy can handle multiple routes for use against different revisions of an API or for use against completely unrelated APIs. See etc/routes.sample.json for an example configuration.
- Simple request forwarding (useful for preserving backwards compatability with pre-CurryProxy versions of an API hosted in a single datacenter)
- Example:
GET https://api.example.com/v1.0/foo/bar
forwarded toGET https://1.api.example.com/v1.0/foo/bar
- Example:
- Advanced request forwarding to multiple endpoints
- Example:
GET https://api.example.com/1,2/v1.0/foo/bar
forwarded to the following:GET https://1.api.example.com/v1.0/foo/bar
GET https://2.api.example.com/v1.0/foo/bar
- Requests are made in parallel
- JSON responses received from multiple endpoints are aggregated and returned to the client
- Example:
{"foo": 1}
received from 1 and{"bar": 2}
received from 2 are aggregated to[{"foo": 1}, {"bar": 2}]
and returned to the client
- Example:
- Rich, meaningful errors logged and returned to the client when a proxied request fails
- Example:
pip install curryproxy
- Setup the configuration files and start it up!
- Merging responses from multiple endpoints together occurs only under certain conditions outlined on the Multiple Endpoints Aggregation wiki page.
- OData support for server-side ordering and paging
- Response caching for a specified time