如何在 Akka-HTTP 中映射两个不同的 url:一个 url 有参数,另一个没有参数?

How to map two different urls in a Akka-HTTP: one url with param and the same without the param?

我想用相同的 URI 定义 2 个不同的 GET REST 端点,一个没有任何查询参数,另一个有查询参数。

例如:

http://host:port/resource/resourceID(没有查询参数的uri)

http://host:port/resource/resourceID?key=value (uri with query parameter)

如何使用scala在Akka-HTTP中实现上述要求,并且还需要URI中的Segment(resource ID)。

提前致谢。

由于您的 uri 可以带或不带查询参数,您可以做类似的事情

path("resource" / Segment) { resourceId => 
    parameter("key".optional) { value => //value of type Option[String]
       ???
    }
}

来自doc

"color".optional (symbolic notation "color".?) extract the optional value of parameter “color” as Option[String]

@cceneson 的解决方案对我有用。

如果您使用的 Akka-HTTP 版本高于 10.2.0,则使用 下面的解决方案

path("resource" / Segment) { resourceId => 
    parameter("key".optional) { value => //value of type Option[String]
       ???
    }
}

否则使用下面的解决方案

path("resource" / Segment) { resourceId => 
        parameter("key".?) { value => //value of type Option[String]
           ???
        }
    }