查看文档中GET请求的查询参数,例如:
val route =
parameter("color") { color =>
complete(s"The color is '$color'")
}
其中,颜色是可接受的参数。
当包含不可接受的参数时,如何使请求失败?默默地接受未知参数似乎很糟糕。调用方不会意识到他们拼错了参数,并且它保持在默认值。
解决此问题的一种方法如下。
- 从请求上下文中提取查询参数的完整列表。这可以通过parameterMap或parameterSeq指令来完成,也可以通过提取requestUri然后从
Uri
访问查询来完成 - 请检查所有参数名称是否有效
- 如果存在任何无法识别的参数名称,请拒绝请求
您可以实现一个自定义的Directive
来封装这种行为并避免代码重复。