【问题标题】:How to handle multiple invalid query params in akka http?如何处理akka http中的多个无效查询参数?
【发布时间】:2017-10-25 21:02:42
【问题描述】:

我的路由中定义了查询参数,如下所示:

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(复数)?

【问题讨论】:

    标签: scala akka akka-http


    【解决方案1】:

    使用handleAll。例如:

    RejectionHandler.newBuilder()
      .handleAll[MalformedQueryParamRejection] { paramRejections =>
        // paramRejections is a Seq[MalformedQueryParamRejection]
        val malformedParamNames = paramRejections.map(_.parameterName)
        ...
      }
      ...
    

    【讨论】:

      【解决方案2】:

      我为此提出了功能请求:

      https://github.com/akka/akka-http/issues/1490

      【讨论】:

        猜你喜欢
        • 2017-02-07
        • 2021-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-11
        • 1970-01-01
        • 2017-08-21
        相关资源
        最近更新 更多