scala – 在Akka指令中提取路径头
我使用
akka directives来匹配特定的路径模式:
/item/quantity 例子就是 /apples/100 /bananas/200 可能的项目(例如“苹果”,“香蕉”,……)不是预先知道的,因此使用路径对项目进行硬编码不是一种选择. 但是,我找不到提取路径头部的PathMatcher.我正在寻找形式的东西 val route = get { path(PathHeadAsString) { item : String => path(IntNumber) { qty : Int => complete(s"item: $item quantity: $qty") } ~ complete("no quantity specified") } ~ complete("no item specified") } 哪里 Get("/apples/100") ~> route ~> check { responseAs[String] shouldEqual "item: apples quantity: 100" } 有没有办法提取路径的第一段? 如果数量在路径中,则路径(段)匹配器将不匹配. 我显然可以使用路径(段)来获取路径元素的List [String],但是我必须手动提取列表头和列表尾部,这似乎是不优雅的. 提前感谢您的考虑和回应. 解决方法
你可以
compose PathMatchers with modifiers
path(Segment / IntNumber) { case (item,qty) => complete(s"item: $item quantity: $qty") } 或者,如果您需要完整的突破,请使用pathPrefix: val route = pathPrefix(Segment) { item : String => path(IntNumber) { qty : Int => complete(s"item: $item quantity: $qty") } ~ pathEnd { complete("no quantity specified") } ~ complete("something else going on here") } ~ complete("no item specified") (注意那里附加的pathEnd指令;即便如此,我也不会说匹配的模式代表所有可能的情况.) 从akka routing directives开始: > pathPrefix指令“在使用前导斜杠后,将给定的PathMatcher应用于剩余不匹配路径的前缀.” 从akka path-matchers开始,Segment路径匹配器“匹配,如果不匹配的路径以路径段开始(即不是斜杠).如果是,则将路径段提取为String实例.” (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |