我有一个要在多个场景中重用的路由片段:
val dirSegment = "licenses"
path( dirSegment ~ PathEnd ) {
redirect( dirSegment + "/", StatusCodes.MovedPermanently )
} ~
pathPrefix(dirSegment) {
path("") {
/* do something */
}
}
我想把它变成一个指令(或参数化路由?),我可以在其中指定dirSegment
val 的值和任意进一步的路由/代码来代替path("") { /* do something */ }
白色保留重定向行为,如下所示:
directoryPath("licenses") {
path("") {
/* do something */
}
} ~
directoryPath("about") {
path("") {
/* do somthing else */
}
}
而在没有所有重复的情况下,这将具有与以下相同的行为:
val dirSegment = "licenses"
val anotherDir = "About"
path( dirSegment ~ PathEnd ) {
redirect(dirSegment + "/", StatusCodes.MovedPermanently )
} ~
pathPrefix(dirSegment) {
path("") {
/* do something */
}
} ~
path( anotherDir ~ PathEnd ) {
redirect(anotherDir + "/", StatusCodes.MovedPermanently )
} ~
pathPrefix(anotherDir) {
path("") {
/* do something else */
}
}
请注意,这个问题的灵感来自如何在喷射路由中自动将斜杠添加到 url 的末尾?