【问题标题】:Play Framework - Generates Code for Routes ConfigurationPlay Framework - 为路由配置生成代码
【发布时间】:2018-07-11 01:20:33
【问题描述】:

我最近开始使用 Scala 学习 Play framework 2.6。我知道 Play 会为我在 conf/routes 中的路由配置文件编译和生成代码,例如 reverse-routing,但我很难理解它在哪里以及如何生成它们。

据我观察,在target/scala-2.12/routes目录下发现了4个生成文件:

  • Routes.scala
  • RoutesPrefix.scala
  • routes.java
  • ReverseRoutes.scala

以上4个文件的目的/作用是什么?

【问题讨论】:

    标签: scala playframework routes


    【解决方案1】:

    基本上它允许您根据conf/routes 文件生成反向路由。

    你有一个控制器:

    package controllers
    
    class SomethingController {
    
      def doThings(param: String): Future[String] = ???
    }
    

    routes 文件

    GET /something/:param  controllers.SomethingController.doThings(param: String)
    

    然后 play 会生成类

    • 会将查询连接到控制器 - 在Routes.scala 中,您可以看到将查询传递给正确控制器的代码。 Play 应用程序使用它,您不必处理此文件,
    • 允许您为特定操作生成 URL - routes.javaReverseRoutes.scala

      controllers.routes.SomethingController.doThings("something") // Call

    • prefix 是一个实用程序,可让您一次为所有路由添加前缀 - 例如,如果您想在主机和 URI 之间的任何地方添加/api,那么这是可能的,因为前缀是可配置的(例如,通过在application.conf 中设置play.http.context=/api)。您可能不必直接使用它。

    【讨论】:

    • 根据您的回答,我需要处理的唯一文件是ReverseRoutes.scala。你能告诉我我想在什么时候以及什么地方使用这个文件吗?
    • 它生成 Call 对象,您可以使用该对象:生成请求的 URI,如果您在范围内有隐式请求,则为请求的绝对 URL,但您也可以提供它带有正文和标头并用于发出实际请求。它在测试中很有用,或者如果您有多个具有聚合反向路由的应用程序 (playframework.com/documentation/2.6.x/AggregatingReverseRouters),那么您可以非常可靠地从一个站点向另一个站点发出请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多