Running as a Netty-based server¶
Warning! This is an early development module, with important features missing.
To expose an endpoint using a Netty-based server, first add the following dependency:
"com.softwaremill.sttp.tapir" %% "tapir-netty-server" % "0.19.0-M10"
Then, use:
NettyFutureServer().addEndpoints
to exposeFuture
-based server endpoints.NettyCatsServer().addEndpoints
to exposeF
-based server endpoints, whereF
is any cats-effect supported effect.
For example:
import sttp.tapir._
import sttp.tapir.server.netty.{NettyFutureServer, NettyFutureServerBinding}
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
val helloWorld = endpoint
.get
.in("hello").in(query[String]("name"))
.out(stringBody)
.serverLogic(name => Future.successful[Either[Unit, String]](Right(s"Hello, $name!")))
val binding: Future[NettyFutureServerBinding] =
NettyFutureServer().addEndpoint(helloWorld).start()
Configuration¶
The interpreter can be configured by providing an NettyFutureServerOptions
value, see server options for
details.
Some options can be configured directly using a NettyFutureServer
instance, such as the host and port. Others
can be passed using the NettyFutureServer(options)
methods. Options may also be overridden when adding endpoints.
Defining an endpoint together with the server logic¶
It’s also possible to define an endpoint together with the server logic in a single, more concise step. See server logic for details.