我必须实现一个GET,其中可以有5种不同的查询参数,但是仅在仅传递一个参数的情况下,该请求才有效。 我是Scala世界的新手。最好的方法是什么?
当前我正在使用parameterMap,但我愿意接受建议。
pathPrefix("cars") {
pathSingleSlash {
complete("/engines")
}
get {
parameterMap { params =>
if (params.size != 1) {
complete(StatusCodes.BadRequest)
} else {
params.foreach{
case ("asd", value ) //doSomething
case _ => complete(StatusCodes.BadRequest)
}
}
}
}
这不是当前有效的方法,因为:
Error:(39, 27) type mismatch;
found : Unit
required: akka.http.scaladsl.server.RequestContext => scala.concurrent.Future[akka.http.scaladsl.server.RouteResult]
params.foreach{
我可以在最后添加一个完整的字母来解决它,但这不是解决方案。 有什么建议吗?
有效请求
/app/cars/engines?capacity=1000
/app/cars/engines?type=benzin
无效请求
/app/cars/engines?type=benzin&capacity=1000
答案 0 :(得分:2)
尽管存在“类型不匹配”错误,但是您的总体方法还不错。导致该错误的原因是使用foreach
,它返回了Unit
。解决该错误的一种方法是在检查head
的大小是否为一个后检查Map
的{{1}}:
Map