在Akka HTTP中,可以使用orElse
方法来定义路由的备选项。orElse
方法接受另一个路由作为参数,并将其作为备选项添加到当前路由中。
下面是一个示例代码,演示了如何使用orElse
方法来定义路由的备选项:
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model._
import akka.http.scaladsl.server.Directives._
import akka.stream.ActorMaterializer
object Main extends App {
implicit val system = ActorSystem("my-system")
implicit val materializer = ActorMaterializer()
implicit val executionContext = system.dispatcher
val route1 = path("hello") {
get {
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "Hello, Akka HTTP!
"))
}
}
val route2 = path("bye") {
get {
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "Goodbye, Akka HTTP!
"))
}
}
val routes = route1 ~ route2
val bindingFuture = Http().bindAndHandle(routes, "localhost", 8080)
println(s"Server online at http://localhost:8080/")
}
在上面的代码中,我们首先定义了两个路由route1
和route2
。然后,我们使用orElse
方法将这两个路由组合成一个主路由routes
。最后,我们使用Http().bindAndHandle
方法将主路由绑定到特定的主机和端口。
在运行代码后,你可以在浏览器中访问http://localhost:8080/hello
和http://localhost:8080/bye
来查看两个不同的路由处理结果。