喷涂 - 使用基于左右任务的HTTP代码完成

时间:2013-12-30 17:29:17

标签: scala akka spray

我有一个像以下

的结构
    handleWith {
               mr: MyRequest =>
                (myactor ? mr).mapTo[Either[BadRequest, GoodResponse]]

             }

根据Either的结果,我想完成基于Right响应的200和基于左侧的某种4XX。我不太确定如何将未来拉入比赛,但为了做到这一点。

1 个答案:

答案 0 :(得分:3)

如果我正确解释您的问题,您想知道如何模式匹配Either值?如果是这样,您可以执行以下操作:

handleWith {
  mr: MyRequest =>
   (myactor ? mr).mapTo[Either[BadRequest, GoodResponse]] match {
     case Left(badRequest) => someSortOf4xxx(badRequest)
     case Right(goodResponse) => anOkResponse(goodResponse)
   }
}