2

我可以通过在HTTP 服务之前添加过滤器来应用所有类型的传入 HTTP 请求的预处理,filter1 andThen httpService

val addRequestHeaderFilter = new SimpleFilter[Request, Response] {
    def apply(req: Request, service: Service[Request, Response]) = {
      req.headerMap.add("header1","header_value")
      service(req)
    }      
 }
 Http.serve(":5000", addRequestHeaderFilter andThen theActualHTTPService) 

问题是,我想将标头添加到响应中。是否有售后服务过滤器?你真的做不到service andThen service

4

1 回答 1

4

我的错:我在推理过滤器,就像它们是流一样。所以这有效:

val addRequestHeaderFilter = new SimpleFilter[Request, Response] {
    def apply(req: Request, service: Service[Request, Response]) = {
      val respFuture = service(req)
      respFuture.map(_.headerMap.add("header1","header_value"))
      respFuture
    }      
 }
 Http.serve(":5000", addRequestHeaderFilter andThen theActualHTTPService) 

在 fitler 中,我正在应用服务并在返回它之前操纵它的响应。这就像一个服务前过滤器,即不需要反转andThen功能组合。

Finagle 真的很酷 <3

于 2015-12-02T12:23:29.520 回答