【发布时间】:2017-06-27 21:13:53
【问题描述】:
我是第一次使用 Akka-HTTP,在构建处理带有多个参数的 GET 请求的路由时遇到了一些问题。这是我的路线的简化版本——它接受 2 个查询参数,然后将它们包装在一个案例类中并以 JSON 格式返回它们(使用 Circe):
def echo(latitude: Double, longitude: Double) = Future.successful { Coordinates(latitude, longitude) }
val route = get {
pathPrefix("foo") {
path("echo") {
parameters('latitude.as[Double], 'longitude.as[Double]) {
(latitude, longitude) =>
complete(echo(latitude, longitude))
}
}
}
}
虽然这按预期工作,但我在编译期间收到以下警告:
“这里没有自动适应:使用显式括号。[警告]
签名:ParameterDirectives.parameters(pdm: akka.http.scaladsl.server.directives.ParameterDirectives.ParamMagnet): pdm.Out [warn] 给定参数:scala.Symbol("latitude").as[Double], scala.Symbol("longitude").as[Double] [warn] 适配后: ParameterDirectives.parameters((scala.Symbol("纬度").as[Double], scala.Symbol("经度").as[Double]): akka.http.scaladsl.server.directives.ParameterDirectives.ParamMagnet{类型 Out = akka.http.scaladsl.server.Directive[(Double, Double)]}) [警告]
参数('latitude.as[Double],'longitude.as[Double]){(纬度, 经度) =>"
按照不同的示例,我尝试了以下路线,但尽管它编译时没有任何警告,但它总是返回 404:
val route = get {
pathPrefix("foo") {
path("echo" / DoubleNumber / DoubleNumber) {
(latitude, longitude) =>
complete(echo(latitude, longitude))
}
}
}
如果有人知道我如何通过第一条路线修复警告或让第二条路线正常工作,我将非常感谢您的帮助。此外,我正在处理的实际服务将具有 4 个 GET 方法——不同的路径和返回类型,但它们都将具有相同的 4 个参数。有没有办法在编写路线时构建它以最大限度地减少样板文件?同样,我对 Akka-HTTP 非常陌生,因此非常感谢任何建议或建议!
谢谢, 蒂姆
【问题讨论】: