fhttp is a little proof of concept, whether it's possible to define a HTTP-API in a functional manner
without binding directly to a framework.
From the definition it should be possible to generate Server and Client implementations without that much boilerplate.
The definition should not have any dependencies to the Server/Client library.
This is a proof of concept. Although it works, expect bugs everywhere. There are no published packages.
Each ApiCall instance is made of various transitions, stored in a full typed shapeless HList.
The Framework Implementation (at the moment only Akka HTTP) lifts this list into an Encoder / Decoder for HTTP-Requests and their response.
coreDefinition systemakkaImplementation for Akka HTTPexampleA simple Example
- Support for path adding/extracting
- Support for Circe JSON, Strings
- Support for async file upload and download
- Support Query Parameters.
- Elegant transport for errors in error responses.
- Testing
- Better error handling
- Better path handling
- More HTTP Methods (right now only
GET,POSTandDELETE) - Support for optional values
- Improved conversion routines (e.g. Boolean query parameters)
- Get rid of
VTreeif possible. - Reduce number of
Futuremappings if possible. - Extending
- Multi part decoding on Akka Server side buffers the request in Memory.