Scala Play Framework-为路由配置生成代码

Scala Play Framework-为路由配置生成代码,scala,playframework,routes,Scala,Playframework,Routes,我最近开始用Scala学习Play framework 2.6。我知道Play编译并生成代码,例如,为我的路由配置文件在conf/routes中编译和生成代码,但我很难理解它在哪里以及如何生成代码 根据我的观察,我在target/scala-2.12/routes目录下找到了4个生成的文件: 斯卡拉酒店 斯卡拉航线 routes.java 斯卡拉反向口 上述4个文件的目的/作用是什么?基本上,它允许您基于conf/routes文件生成反向路由 您有一个控制器: package control

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

根据我的观察,我在
target/scala-2.12/routes
目录下找到了4个生成的文件:

  • 斯卡拉酒店
  • 斯卡拉航线
  • routes.java
  • 斯卡拉反向口

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

基本上,它允许您基于
conf/routes
文件生成反向路由

您有一个控制器:

package controllers

class SomethingController {

  def doThings(param: String): Future[String] = ???
}
路由
文件

GET /something/:param  controllers.SomethingController.doThings(param: String)
然后play将生成

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

    controllers.routes.SomethingController.doThings(“某物”)//调用

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


根据您的回答,我需要处理的唯一文件是
ReverseRoutes.scala
。你能告诉我什么时候用这个文件吗?它会生成
Call
对象,你可以用它来:生成请求的URI,如果你的作用域中有一个隐式请求,那么是一个请求的绝对URL,但是你也可以给它提供正文和标题,并用它来发出一个实际的请求。它在测试中很有用,或者如果您有多个应用程序具有聚合反向路由(),那么您可以非常可靠地从一个站点向另一个站点发出请求。