Scala Akka通用自定义指令
我正在使用自定义指令验证我的参数:Scala Akka通用自定义指令,scala,akka,akka-http,Scala,Akka,Akka Http,我正在使用自定义指令验证我的参数: def optionalIntParamAs[C](parameterName: String, validator: Int => C Or ErrorMessage): Directive1[Option[C]] = parameter(parameterName.as[Int].?) .recoverPF[Tuple1[Option[Int]]] { case Seq(MalformedQueryParamR
def optionalIntParamAs[C](parameterName: String, validator: Int => C Or ErrorMessage): Directive1[Option[C]] =
parameter(parameterName.as[Int].?)
.recoverPF[Tuple1[Option[Int]]] {
case Seq(MalformedQueryParamRejection(name, msg, cause)) =>
reject(MalformedQueryParamRejection(name,
s"Invalid value '${msg.split("'")(1)}' for query parameter '$name'.", cause))
}
.flatMap {
case Some(intParam) =>
validator(intParam) match {
case Good(c) => provide(Some(c))
case _ => reject(ValidationRejection(s"Invalid value '$intParam' for query parameter '$parameterName'."))
}
case _ => provide(None)
}
在我的路线中用作:
optionalIntParamAs[PageSize]("pageSize", PageSize.validate) { pageSize =>
...
}
我想要一个通用指令,这样我就可以写:
optionalParam[Int].as[PageSize]
optionalParam[String].as[...]
有什么建议吗
更新:使用Stefano的解决方案,我们将得到以下编译错误:
找到:akka.http.scaladsl.common.nameOption插座[In][error]
必修的:
akka.http.scaladsl.server.directions.parameterdirections.parammate
[错误]参数(parameterName.as[In]。?)
为什么?