我是scala世界的新手,并使用http4s开发我的应用程序的REST层。我正在使用blaze服务器来部署/发布服务。我需要在流到达我的HttpService方法之前在流中安装servlet过滤器或拦截器。我怎么能这样做?
答案 0 :(得分:0)
http4s库具有所谓的middleware功能。中间件功能是您服务的包装。 例如,您有简单的端点:
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软件包中已存在的中间件。