【发布时间】:2019-02-06 01:08:42
【问题描述】:
我发现有很多方法可以给猫剥皮,但首选的风格写作路线是什么
def leaderboardGet1(): Route = {
get {
pathEnd {
parameter('name) { name =>
complete(. . .)
} ~
complete(. . .)
} ~
pathPrefix(base64identifier) { leaderboardIdentifier =>
pathEnd {
complete(. . .)
} ~
pathPrefix(base64identifier) { memberIdentifier =>
pathEnd {
complete(. . .)
}
}
} ~
complete {
HttpResponse(BadRequest, entity = "Bad GET /leaderboard request")
}
}
}
我将第一种样式称为 match-least-first,而将第二种样式称为 match-most-first。如果有人知道更好的名字,请告诉我。
def leaderboardGet2(): Route = {
get {
pathPrefix(base64identifier) { leaderboardIdentifier =>
pathPrefix(base64identifier) { memberIdentifier =>
pathEnd {
complete(. . .)
}
} ~
pathEnd {
complete(. . .)
}
}
} ~
pathEnd {
parameter('name) { name =>
complete(. . .)
}
} ~
complete(. . .)
} ~
complete {
HttpResponse(BadRequest, entity = "Bad GET /leaderboard request")
}
}
}
我在寻找更多编码风格的可读性/可维护性,但没有强烈的感觉。我更喜欢第二种风格,因为我可以更容易地看到最长的 URL 是什么,但没有其他意见。
可能有一些性能方面的考虑,具体取决于统计上请求最多的 URL,但我怀疑这很重要。
在函数式编程风格、惯用的 Scala、惯用的 Spray 路由等方面是否有其他考虑?
【问题讨论】:
-
尝试阅读路由命名约定blog.mwaysolutions.com/2014/06/05/…
-
谢谢。很好的参考,但不是我想要的。具体来说,我一直在寻找如何在 Akka HTTP 中定义路由,我的两个示例中哪一个是更好的样式,或者这个问题没有实际意义。