使用Spray Route Concatenation进行错误传播

时间:2016-01-07 02:39:41

标签: java scala spray

面临一个小问题。我已经用一些示例代码解决了这个问题,所以原谅粗暴!

我在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块,则会在正确的位置处理错误。

有没有人遇到过这个问题?我正确使用路由连接吗?为什么这个错误会冒泡?

全心全意,

我再次尝试简化此问题,但如果您想查看真实代码或更多信息,请与我们联系。

0 个答案:

没有答案