gpt4 book ai didi

scala - 喷涂路由多个深度路径

转载 作者:行者123 更新时间:2023-12-04 13:32:20 25 4
gpt4 key购买 nike

我有4个基于URL的响应级别。因此对于:
*在/abc上获取->响应应为abc*在/abc/def上获取->响应应为def*在/abc/def/ghi上获取->响应应为ghi*在/abc/def/ghi/jkl上进行GET->响应应该(令人惊讶地)是jkl
所以我的问题是如何使用Spray.io设计这种请求-响应属性?

我知道可以将pathPrefixpath一起使用,但这仅适用于两个级别?
通过这种方法,它应该看起来像:

val route = {
path("/abc") {
// complete with response 'abc'
} ~
path("/abc/def") {
// complete with response 'def'
} ~
path("/abc/def/ghi") {
// complete with response 'ghi'
} ~
path("/abc/def/ghi/jkl") {
// complete with response 'jkl'
}
}

有什么办法可以“嵌套路径”吗?我知道这是行不通的,只是这样的想法:
val route = {
path("/abc") {
// complete with response 'abc'
'sub'path("/def") {
// complete with response 'def'
'sub'path("/ghi") {
// complete with response 'ghi'
'sub'path("/jkl") {
// complete with response 'jkl'
}
}
}
}
}

还是任何其他适当的嵌套路径方式?

最好的,
梅达

最佳答案

我认为问题在于如何同时完成这两项工作,如果路径已完成,则在一个级别上完成某项操作;如果还有更多可用的路径,则执行更深一层的操作。

尝试这个:

val route = {
pathPrefix("abc") {
// complete with response 'abc'
pathEnd { complete("abc") } ~ // don't forget the twiggles
pathPrefix("def") {
pathEnd { complete("def") } ~
pathPrefix("ghi") {
pathEnd { complete("ghi") } ~
path("jkl") { // path already includes pathEnd, path(x) = pathPrefix(x ~ PathEnd)
complete("jkl")
}
}
}
}
}

顺便提一句。这与“/abc/”等不匹配,即带有斜杠的路径。如果要强制匹配结尾的斜杠,或者选择使用 pathSingleSlashpathEndOrSingleSlash而不是 pathEnd

关于scala - 喷涂路由多个深度路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22099021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com