package algebra
Algebra interfaces
- Alphabetic
- By Inheritance
- algebra
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
trait
Assets extends EndpointsWithCustomErrors
Describes endpoints related to static assets (e.g.
Describes endpoints related to static assets (e.g. medias, scripts, stylesheets, etc.)
-
trait
BasicAuthentication extends EndpointsWithCustomErrors
Provides vocabulary to describe endpoints that use Basic HTTP authentication.
Provides vocabulary to describe endpoints that use Basic HTTP authentication.
This trait works fine, but developers are likely to implement their own authentication mechanism, specific to their application.
-
trait
BuiltInErrors extends Errors
Interpreter for the Errors algebra that uses endpoints4s built-in error types:
-
trait
ChunkedEntities extends EndpointsWithCustomErrors
Algebra interface for describing request and response entities that use the chunked transfer-encoding.
Algebra interface for describing request and response entities that use the chunked transfer-encoding.
It introduces a type
Chunks[A]
, which models a stream of chunks of typeA
. It also introduces constructors for chunked request and response entities.Example:
val notifications: Endpoint[Unit, Chunks[String]] = endpoint( get(path / "notifications"), ok(textChunksResponse) )
Or also:
val upload: Endpoint[Chunks[Array[Byte]], Unit] = endpoint( post(path / "upload", bytesChunksRequest), ok(emptyResponse) )
-
trait
ChunkedJsonEntities extends ChunkedEntities with JsonCodecs
Enriches the ChunkedEntities algebra with constructors of request and response entities carrying JSON documents.
Enriches the ChunkedEntities algebra with constructors of request and response entities carrying JSON documents.
Example:
val events = endpoint( get(path / "events"), ok(jsonChunksResponse[Event]) )
- type Documentation = Option[String]
-
trait
Endpoints extends EndpointsWithCustomErrors with BuiltInErrors
Algebra interface for describing endpoints made of requests and responses.
Algebra interface for describing endpoints made of requests and responses.
Requests and responses contain headers and entity.
/** * Describes an HTTP endpoint whose: * - request uses verb “GET”, * - URL is made of path “/foo”, * - response has no entity */ val example = endpoint(get(path / "foo"), emptyResponse)
This trait uses BuiltInErrors to model client and server errors.
-
trait
EndpointsWithCustomErrors extends Requests with Responses with Errors
Algebra interface for describing endpoints made of requests and responses.
-
trait
Errors extends AnyRef
Defines the error types used to model client and server errors.
Defines the error types used to model client and server errors.
The
ClientErrors
type is used by endpoints4s to model errors coming from the client (missing query parameter, invalid entity, etc.).The
ServerError
type is used by endpoints4s to model errors coming from the server business logic.The
badRequest
andinternalServerError
operations defined in Responses define responses carrying entities of typeClientErrors
andServerError
, respectively.Interpreters are expected to use the
clientErrorsResponse
andserverErrorResponse
operations defined here to handle client and server errors, respectively.- See also
- final class ExternalDocumentationObject extends Serializable
-
trait
JsonCodecs extends JsonEntities
Fixes both the
JsonRequest
andJsonResponse
types to be a sameJsonCodec
type.Fixes both the
JsonRequest
andJsonResponse
types to be a sameJsonCodec
type.This trait is used as an implementation detail (to reuse code between JsonEntitiesFromSchemas and JsonEntitiesFromCodecs) and is not useful to end-users.
-
trait
JsonEntities extends EndpointsWithCustomErrors
Algebra interface for describing JSON entities in requests and responses.
Algebra interface for describing JSON entities in requests and responses.
Generally, this algebra is not directly used, but one of its specialized algebras is used instead: JsonEntitiesFromSchemas or JsonEntitiesFromCodecs.
/** * Describes an HTTP endpoint whose: * - request uses verb “GET”, * - URL is made of the segment “/user” followed by a `String` segment, * - response content type is JSON and contains a `User` */ val example = endpoint(get(path / "user" / segment[UUID]), jsonResponse[User])
-
trait
JsonEntitiesFromCodecs extends JsonCodecs
Turns a
JsonCodec
into a Codec. -
trait
JsonEntitiesFromSchemas extends JsonCodecs with JsonSchemas
Partially applies the JsonEntities algebra interface to fix the
JsonRequest
andJsonResponse
types to beJsonSchema
. -
trait
LowLevelEndpoints extends EndpointsWithCustomErrors
Provides a way to define endpoints that directly expose the low level APIs of the interpreters.
Provides a way to define endpoints that directly expose the low level APIs of the interpreters.
Using this trait is not recommended because endpoints defined using these methods miss the opportunity to share a consistent protocol between client and server interpreters. However, it can be useful for transitioning legacy code.
Example of endpoint definition:
val someEndpoint = endpoint(post(path, rawRequestEntity), rawResponseEntity)
Endpoint implementation:
someEndpoint.implementedBy { request => Ok(request.body.asText.getOrElse("Unable to decode request entity")) }
XMLHttpRequest call:
someEndpoint(xhr => "Foo") .map(response => println(response.responseText))
- trait Methods extends AnyRef
-
trait
MuxEndpoints extends EndpointsWithCustomErrors
Algebra interface for describing endpoints such that one endpoint can handle several types of requests and responses.
-
trait
MuxRequest extends AnyRef
Multiplexed request type
- trait Requests extends Urls with Methods with SemigroupalSyntax
- trait Responses extends StatusCodes with InvariantFunctorSyntax
- trait StatusCodes extends AnyRef
- final class Tag extends Serializable
-
trait
Urls extends PartialInvariantFunctorSyntax
Algebra interface for describing URLs made of a path and a query string.
Algebra interface for describing URLs made of a path and a query string.
A path is itself made of segments chained together.
A query string is made of named parameters.
/** * Describes an URL starting with a segment containing “articles”, followed * by another `String` segment, and a query string containing * a mandatory `Lang` parameter named “lang”, and an * optional `Int` parameter named “page”. * * Examples of matching URLs: * * - /articles/kitchen?lang=fr * - /articles/garden?lang=en&page=2 */ val example = path / "articles" / segment[String]() /? (qs[Lang]("lang") & qs[Option[Int]]("page"))
Value Members
- object BasicAuthentication
- object ExternalDocumentationObject extends Serializable
- object Tag extends Serializable