0

我是 scala 世界的新手,使用 http4s 开发我的应用程序的 REST 层。我正在使用 blaze 服务器来部署/发布服务。我需要在流到达我的 HttpService 方法之前在流中安装一个 servlet 过滤器或拦截器。我怎样才能做到这一点?

4

1 回答 1

0

http4s 库具有所谓的中间件功能。中间件功能是您的服务的包装器。例如,您有简单的端点:

 val helloWorldService = HttpService {
  case GET -> Root / "hello" / name =>
    Ok(s"Hello, $name.")
}

要应用中间件,您可以执行以下操作:

     val service: HttpService = middleware(authedService)

      val authedService: AuthedService[User] =
        AuthedService {
          case GET -> Root / "welcome" as user => Ok(s"Welcome, ${user.name}")
        }
      val middleware = AuthMiddleware(authUser)

你只需要实现你的authUser

val authUser: Service[Request, User] = ???

您可能需要查看 org.http4s.server.middleware 包以了解已经存在的中间件。

于 2017-08-16T14:21:28.270 回答