缺少标题的Akka HTTP拒绝

时间:2019-02-18 22:22:01

标签: scala akka akka-http

我有以下方法:

private def initiateAuth(req: LoginRequest, userAgent: String, deviceId: String) = {
    extractClientIP { clientIp =>
      extractRequestContext { implicit ctx =>
        if (clientIp.toOption.isEmpty) reject(Rejections.validationRejection("abc"))
        val xForwardedFor = clientIp.toOption.map(_.getHostAddress).get
        mapToResponse(userAuthenticator.auth(req.username, req.password, deviceId, xForwardedFor, userAgent))
      }
    }
}

真正令人奇怪的是Rejections.validationRejection("abc")可以工作,但是当我使用Rejections.missingHeader("abc")时出现错误:

enter image description here

两者之间有何不同?我很困惑,因为MissingHeaderRejection实现了Rejection,那么为什么类型不匹配?

1 个答案:

答案 0 :(得分:1)

在clientIp选项为空时的if语句中, if 的结果将被忽略。我最好使用模式匹配或 if-else 表达式