我的路线中定义了查询参数,如下所示:
parameters(('modifiedDate.as[String].?, 'active.as[Boolean].?)) { (modifiedDate, active) =>
我有以下拒绝处理程序:
RejectionHandler.newBuilder()
.handle { case MalformedQueryParamRejection(param, _, _) =>
param match {
case "modifiedDate" => ...
case "active" => ...
}
}
问题是MalformedQueryParamRejection只匹配第一个错误,所以如果两个查询参数都被传递并且两者都不正确:
some-endpoint?modifiedDate=invalid&active=invalid
只会通知客户第一次错误。
有没有办法使用akka http来通知所有无效的查询参数,例如MalformedQueryParamRejection
但报告所有无效查询参数,如MalformedQueryParamsRejection
(复数)?< / p>
答案 0 :(得分:2)
使用handleAll
。例如:
RejectionHandler.newBuilder()
.handleAll[MalformedQueryParamRejection] { paramRejections =>
// paramRejections is a Seq[MalformedQueryParamRejection]
val malformedParamNames = paramRejections.map(_.parameterName)
...
}
...
答案 1 :(得分:0)
我已经为此提出了一项功能请求: