Streaming end to end
- Server: Streaming responses end to end, from the
FileServicereading all the directories in your
$HOMEdirectory to the
- StreamClient: Parsing chunks of the response body produced by the server in a streaming fashion way.
You'll need two sbt sessions. Run the server in one and after the client in the other to try it out.
- GZip: For compressed responses. Client must set the
Accept Encodingheader to
- AutoSlash: To make endpoints work with and without the slash
/at the end.
Response compression is verified by
HexNameHttpEndpointSpec. You can also try it out on Postman or similar.
- Timeout: Handling response timeouts with the given middleware.
TimeoutHttpEndpointgenerates a response in a random time to demonstrate the use.
- NonStreamResponse: Using the
ChunkAggregatormiddleware to wrap the streaming
FileHttpEndpointand remove the Chunked Transfer Encoding.
/v1/nonstream/dirs?depth=3demonstrates the use case.
Media Type negotiation
- XML and Json: Decoding request body with either of these types for the same endpoint.
JsonXmlHttpEndpointdemonstrates this use case and it's validated in its spec.
Multipart Form Data
- Server: The
MultipartHttpEndpointis responsible for parsing multipart data with the given multipart decoder.
- MultipartClient: Example uploading both text and an image.
Similar to the streaming example, you'll need to run both Server and MultipartClient to see how it works.
NOTE: Beware of the creation of
rick.jpg file in your HOME directory!
- Basic Auth: Using the given middleware as demonstrated by the
- OAuth 2: Using GitHub as demonstrated by the
In the fs2 package you'll find some practical examples of the few things it's possible to build with this powerful streaming library. This might serve as a starting point, your creativity will do the rest.
Apart from the use of the three core types
Pipe[F, I, O] and
Sink[F, I] you'll find examples of use of the following types:
In addition to the use of some other functions useful in Parallel and Concurrent scenarios.