我是 Akka HTTP 的新手,我想为此创建路由 -> server/company/:company/authority/:authority/user/:user/region/:region/:regionId/:planTypes
我做了这样的路线->
val route: Route = get {
pathPrefix("/server") {
pathPrefix("/company") {
parameter('company) { company =>
pathPrefix("/authority") {
parameter('authority) { authority =>
pathPrefix("user") {
parameter('user) { user =>
pathPrefix("region") {
parameters('region, 'regionId, 'planType) {
(region, regionId, planType) =>
comleteRequest(tenant, authority, user, region, regionId, planType)
}
}
}
}
}
}
}
}
}
}
但这看起来很难看。有没有更好更短的写法。
最佳答案
您可以使用:
path("a" / IntNumber / "b" / IntNumber / "c") {
(a, b) => _.complete((a + b).toString)
} ~
然后,这样调用它:
http://localhost:8080/a/1/b/2/c
将返回 3
。
此处有更多路径匹配器详细信息:https://doc.akka.io/docs/akka-http/current/routing-dsl/path-matchers.html
斜杠运算符将连接两个匹配器并在它们之间插入斜杠。您可以将路径段与文字字符串(如 server
)或提取器(如 RegEx
、LongNumber
等)匹配。每个提取器都会提供一个值,因此在我的示例我使用 2 个 int 提取器并使用 lambda (a, b)
将传递 2 个 int。
关于scala - 我想缩短 Akka Http 中的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70677075/