Akka HTTP-如何拒绝具有无法识别的查询参数的请求



查看文档中GET请求的查询参数,例如:

val route =
parameter("color") { color =>
complete(s"The color is '$color'")
}

其中,颜色是可接受的参数。

当包含不可接受的参数时,如何使请求失败?默默地接受未知参数似乎很糟糕。调用方不会意识到他们拼错了参数,并且它保持在默认值。

解决此问题的一种方法如下。

  1. 从请求上下文中提取查询参数的完整列表。这可以通过parameterMap或parameterSeq指令来完成,也可以通过提取requestUri然后从Uri访问查询来完成
  2. 请检查所有参数名称是否有效
  3. 如果存在任何无法识别的参数名称,请拒绝请求

您可以实现一个自定义的Directive来封装这种行为并避免代码重复。

最新更新