lolhttp alternatives and similar packages
Based on the "HTTP" category.
Alternatively, view lolhttp alternatives based on common mentions on social networks and blogs.
-
Spray
DISCONTINUED. A suite of scala libraries for building and consuming RESTful web services on top of Akka: lightweight, asynchronous, non-blocking, actor-based, testable -
requests-scala
A Scala port of the popular Python Requests HTTP client: flexible, intuitive, and straightforward to use. -
Newman
DISCONTINUED. A REST DSL that tries to take the best from Dispatch, Finagle and Apache HttpClient. See here for rationale. -
Tubesocks
A comfortable and fashionable way to have bi-directional conversations with modern web servers. -
jefe
Manages installation, updating, downloading, launching, error reporting, and more for your application.
CodeRabbit: AI Code Reviews for Developers
Do you think we are missing an alternative of lolhttp or a related project?
Popular Comparisons
README
lolhttp
An HTTP Server and Client library for Scala.
About the library
A server is built from a plain function accepting an HTTP request and eventually giving back an HTTP response. The computation is wrapped into an effect and can handle pure & impure and synchronous & asynchronous scenarios. Requests and responses are just HTTP metadata along with a lazy content body based on fs2, making it easy to handle streaming scenarios if needed. For additional convenience, the library provides content encoders and decoders for the common scala types. Clients and Servers share the same API and the same concepts, making it easy to compose them. SSL is supported on both sides.
Hello World
// Let's start an HTTP server
Server.listen(8888) {
case GET at "/hello" =>
Ok("Hello World!")
case _ =>
NotFound
}
// Let's connect with an HTTP client
Client.runSync(Get("http://localhost:8888/hello")) { res =>
res.readAs[String].map { contentBody =>
println(s"Received: $contentBody")
}
}
Usage
The library is cross-built for Scala 2.11 and Scala 2.12.
The core module to use is "com.criteo.lolhttp" %% "lolhttp" % "0.13.0"
.
There are also 2 optional companion libraries:
"com.criteo.lolhttp" %% "loljson" % "0.13.0"
, provides integration with the circe JSON library."com.criteo.lolhttp" %% "lolhtml" % "0.13.0"
, provides minimal HTML templating.
Documentation
The API documentation is the main reference.
If you never used cats effects before, you should start by having a quick look at it. Service Responses must be wrapped
into an IO
(although there is an implicit conversion translating Response
into a pure IO
if needed). Also consuming the underlying content stream data is an effect. For asynchronous scenarios you have to deal with asynchronous effects, unless you prefer working with Future
and wrapping it at the end using IO.fromFuture
.
If you need to access the underlying content stream, you should first have a look a the fs2 documentation to understand the basics.
For those who prefer documentation by example, you can also follow these hands-on introductions:
- Hello world!
- Serving files from classpath.
- A Github API client.
- A JSON web service.
- Accessing an SQL Database.
- Reading large request streams.
- A simple reverse proxy.
License
This project is licensed under the Apache 2.0 license.
Copyright
Copyright © Criteo, 2018.
*Note that all licence references and agreements mentioned in the lolhttp README section above
are relevant to that project's source code only.