Scalatra 单一动作的多条路线

Scalatra multiple routes for single action

目前我正在尝试重构 API 而不破坏更改。试图将它从 host:port/foo/bar 之类的东西迁移到 host:port/bar 我想知道在 Scalatra 中单个操作是否支持多个路由。我正在尝试:

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

它在任一端点返回空响应,响应代码为 0,所以我有点困惑。这在 Scalatra 中受支持吗?

我知道在 spring 中它看起来像: 但我很好奇 Scalatra 中是否有东西

Scalatra 支持一个动作使用多个转换器,但这意味着如果所有转换器都匹配则调用该动作。这用于为路由添加附加条件。

在您的情况下,请求路径无法同时匹配 "/foo/bar""/bar",因此我猜该操作从未被调用。

您可以按如下方式进行:

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

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

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

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

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