如何在akkahttp中Map两个不同的url:一个url带有param,另一个url没有param?

2ul0zpep  于 2021-07-14  发布在  Java
关注(0)|答案(2)|浏览(267)

我想用相同的uri定义两个不同的get rest端点,一个没有任何查询参数,另一个有查询参数。
前任:
http://host:port/resource/resourceid(不带查询参数的uri)
http://host:port/resource/resourceid?key=value(带有查询参数的uri)
如何用scala在akkahttp中实现上述要求,还需要uri中的segment(resourceid)。
提前谢谢。

nfs0ujit

nfs0ujit1#

因为uri可以有查询参数,也可以没有查询参数,所以可以执行以下操作

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

从医生那里
“color”.optional(符号表示法“color.”?)将参数“color”的可选值提取为option[string]

6yoyoihd

6yoyoihd2#

解决方案表@ccheneson为我工作。
如果你使用的是高于10.2.0的akka http版本,那么使用下面的解决方案

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]
           ???
        }
    }

相关问题