Scala Play Framework 2.5.x中的索引路由

时间:2017-05-11 22:36:11

标签: scala playframework routing

我是Play Framework的新手,刚刚开始使用play-scala-rest-api-example的第一次体验。我将post包复制为新的用户包,将UserRouter添加到路由并将UserRepository附加到Module配置。

一切正常,只是在访问/v1/users时出现404错误。只有/v1/users/有效。对于有和没有斜杠的帖子,最后调用索引路由。除了重命名类和对象之外,我没有做任何改动。就像我说的那样,我刚开始玩框架,可能它是一件非常简单的事情。

这里是路线档案:

GET        /                    controllers.HomeController.index

->         /v1/posts            api.post.PostRouter
->         /v1/users            api.user.UserRouter

# Map static resources from the /public folder to the /assets URL path
GET        /assets/*file        controllers.Assets.at(path="/public", file)

`

2 个答案:

答案 0 :(得分:1)

我找到了遗漏的东西。所以对于任何使用this tutorial并面临同样问题的人。您必须将自定义前缀添加到app/RequestHandler.scala isREST()方法。因此handlerForRequest方法会在结尾处自动添加一个尾部斜杠。

private def isREST(request: RequestHeader) = {
    request.uri match {
        case uri: String if uri.contains("post") => true
        case uri: String if uri.contains("user") => true
        case _ => false
    }
}

private def isREST(request: RequestHeader) = {
    request.uri match {
        case uri: String if uri.contains("post") | uri.contains("user") => true
        case _ => false
    }
}

答案 1 :(得分:0)

您的文件应为

GET        /                    controllers.HomeController.index

GET         /v1/posts            api.post.PostRouter
GET         /v1/users            api.user.UserRouter

# Map static resources from the /public folder to the /assets URL path
GET        /assets/*file        controllers.Assets.at(path="/public", file)

- >符号适用于某些您可能现在不需要的特殊情况。 https://www.playframework.com/documentation/2.5.x/ScalaRouting