Goals
The ultimate goal is to enable developers to easily build awesome client SDKs for their APIs.
Easy to use
- Create HTTP requests using familiar domain specific API semantics
 - Declaratively define response handling behavior
 - Plug-in and forget payload decoding
 
Quick to create
- Enable standard HTTP behaviour by assembling/configuring components
 - Make it easy to implement HTTP specification compliant clients
 - Provide out of the box functionality for redirection, credential management, retry handling, local caching, conditional requests, long request management
 
More reliable and more flexible
- Make testing of request creation and response handling simple without needing to mock the network
 - Allow all SDK functionality to be incrementally “opt-in” or “opt-out”
 - Make it easy to mashup multiple APIs
 - Support building reactive clients
 - Easily support hypermedia APIs