endpoints is a Scala library for defining communication protocols over HTTP between applications.
- endpoints descriptions are first-class Scala values, which can be reused, combined and abstracted over ;
- a same endpoint description can be interpreted in multiple ways:
- a client implementation (JVM and/or Scala.js),
- a server implementation,
- an OpenAPI definition file,
- thus, your client and documentation are always consistent with the actual implementation of your server,
- type safety: you get a compile-time error if you invoke an endpoint but supply incorrect data (requests are guaranteed to be well constructed),
- extensibility: you can introduce both
- new descriptions that are specific to your application (e.g. the usage of a particular HTTP header),
- new interpreters for endpoint descriptions (e.g. generation of a RAML documentation),
- vanilla Scala: being written in pure Scala (no macros), the implementation is easy to reason about and IDE friendly.
- Have a look at the overview to understand in a few minutes what the library does and how its usage look like ;
- Check out the use cases to know where endpoints shines ;
- Install the library and follow the tutorial to progressively learn all the features ;
- Explore the API documentation ;
- Get in touch in the gitter room.
See the Github repository.