面临一个小问题。我已经用一些示例代码解决了这个问题,所以原谅粗暴!
我在Spray中有一系列路线。我也有一些自定义指令来封装逻辑。
countrySegment {
???
} ~ pathPrefix("England") {
???
} ~ pathPrefix("America") {
pathPrefix("Texas") {
pathEnd {
???
}
}
}
国家/地区细分方法如下所示:
def countrySegment(route: Activity => Route): Route = {
println("in country segment")
pathPrefix(Segment) { segment =>
Country(segment) match {
case Some(country) => route(country)
case None => reject(SegmentRejection("contry"))
}
}
}
如果路径前缀没有通过我的模式匹配,那么简单的意图就是抛弃拒绝。
当尝试将json发布到路由并在案例类entity(as[CountryInformation])
中封送它时,这将发生,除非请求格式不正确。它不是在这里抛出错误,而是实际冒泡到countrySegment并在那里抛出一个无关的错误。
查看Route Concatentation或~
的文档,这似乎是理想的行为,
"返回链接两个路由的路由。如果第一条路线拒绝该请求,则第二条路线有机会根据请求采取行动。"
如果我删除了countySegment块,则会在正确的位置处理错误。
有没有人遇到过这个问题?我正确使用路由连接吗?为什么这个错误会冒泡?
全心全意,
我再次尝试简化此问题,但如果您想查看真实代码或更多信息,请与我们联系。