【问题标题】:Scalatra multiple routes for single actionScalatra 多条路线用于单次操作
【发布时间】:2017-11-27 20:13:50
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: scalatra


    【解决方案1】:

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

    在您的情况下,请求路径不能同时匹配 "/foo/bar""/bar",所以我猜这个动作永远不会被调用。

    你可以这样做:

    get("/foo/bar"){
      bar()
    }
    
    get("/bar"){
      bar()
    }
    
    private def bar() = {
      Ok(200)
    }
    

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

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

    【讨论】:

    • 那个正则表达式正是我想要的,但是被忽略了,谢谢
    猜你喜欢
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2019-05-08
    相关资源
    最近更新 更多