需要跨越路线的标题而不放弃404

时间:2017-01-05 18:48:26

标签: scala akka-http

我想在我的akka​​-http路线中要求一个标题,并且可以通过

进行
val route = headerValueByName("foo") { foo =>
  pathPrefix("path") {
    get {
      ...
    } ~ ...
  }
}

但是,现在任何与路径不匹配的请求都会被400(缺少标题)而不是404拒绝。 有没有一种巧妙的方法可以解决这个问题而不必在路径匹配后重复移动headerValueByName

也就是说,如果内部路径和方法匹配成功,有没有办法只应用外部指令(headerValueByName)及其拒绝?

1 个答案:

答案 0 :(得分:0)

如果未指定标题,则不指定要执行的操作,因此我假设您要返回400(错误请求)。

一种可能的解决方案是使用optionalHeaderValueByName指令,然后使用指定的错误完成请求,例如:

val route = optionalHeaderValueByName("foo") { optionalHeader =>
  optionalHeader map { header => 
    // rest of your routes
  } getOrElse complete(StatusCodes.BadRequest)
}