Scalatra单个动作的多个路线

时间:2017-11-27 20:13:51

标签: scalatra

目前我正在尝试重构API而不会破坏更改。尝试将其从host:port/foo/bar迁移到host:port/bar,我想知道在单个操作中是否支持Scalatra多个路由。我试着这样:

get("/foo/bar", "/bar") {
 Ok(200) 
}

它返回任何端点上的空响应,响应代码为0,所以我有点不解。 Scalatra支持吗?

我知道在春天看起来像https://stackoverflow.com/a/5517486/4682816但我很好奇Scalatra中有什么东西

1 个答案:

答案 0 :(得分:2)

Scalatra支持多个变换器用于操作,但它表示在所有变换器匹配时调用的操作。这用于为路由添加其他条件。

在您的情况下,请求路径无法与"/foo/bar""/bar"匹配,因此我猜这个操作永远不会被调用。

您可以改为:

get("/foo/bar"){
  bar()
}

get("/bar"){
  bar()
}

private def bar() = {
  Ok(200)
}

或者您可以使用正则表达式:

get("^(/bar)|(/foo/bar)$".r){
  Ok(200)
}