Action 在游戏框架(Scala)中意味着什么?
What does Action mean in play framework (Scala)?
我是 Play Framework 的新手,正在尝试理解 SimpleRouter
class。在 Play 文档中,我看到一个简单的例子:
val router = Router.from {
case GET(p"/hello/$to") =>
Action {
Results.Ok(s"Hello $to")
}
}
但是我不确定什么是Action
,它的意义是什么?我看到它也在所有其他路由方法中大量使用。这是文档的 link:https://www.playframework.com/documentation/2.8.x/ScalaSirdRouter
我的参考代码:
import play.api.mvc._
import play.api.routing.Router._
import play.api.routing._
import play.api.routing.sird._
class CacheRouter extends SimpleRouter {
override def routes: Routes = {
case GET(p"/") =>
Action {
Results.Ok(s"Hello")
}
// case POST(p"/") =>
// controller.process
//
// case GET(p"/$id") =>
// controller.show(id)
}
}
根据 Play 文档 here 的 Action 是
basically a (play.api.mvc.Request => play.api.mvc.Result) function that handles a request and generates a result to be sent to the client.
换句话说,一个 Action 是 http 请求的服务器端的完整实现,能够接受 play.api.mvc.Request
并做一些工作,并且 return play.api.mvc.Result
在您的示例中,操作不使用请求中的任何内容,return是一个静态 HTTP 200 响应,内容为 hello
编辑: 从此处的评论看来,您遇到的问题是代码示例中的 Action
未得到解决。
这样做的原因是,这实际上不是对 play.api.mvc.Action
的引用,而是构造 Actions.
的辅助方法。
此辅助方法在 play.api.mbc.AbstractController
中定义,您可以对其进行扩展以使用它。
例如:
class CacheRouter @Inject()(cc: ControllerComponents) extends AbstractController(cc) with SimpleRouter {
override def routes: Routes = {
case GET(p"/") =>
Action {
Results.Ok(s"Hello")
}
}
}
}
请记住,以上是使用 Plays guice
集成进行依赖项注入,但这只是众多可用选项之一。
我是 Play Framework 的新手,正在尝试理解 SimpleRouter
class。在 Play 文档中,我看到一个简单的例子:
val router = Router.from {
case GET(p"/hello/$to") =>
Action {
Results.Ok(s"Hello $to")
}
}
但是我不确定什么是Action
,它的意义是什么?我看到它也在所有其他路由方法中大量使用。这是文档的 link:https://www.playframework.com/documentation/2.8.x/ScalaSirdRouter
我的参考代码:
import play.api.mvc._
import play.api.routing.Router._
import play.api.routing._
import play.api.routing.sird._
class CacheRouter extends SimpleRouter {
override def routes: Routes = {
case GET(p"/") =>
Action {
Results.Ok(s"Hello")
}
// case POST(p"/") =>
// controller.process
//
// case GET(p"/$id") =>
// controller.show(id)
}
}
根据 Play 文档 here 的 Action 是
basically a (play.api.mvc.Request => play.api.mvc.Result) function that handles a request and generates a result to be sent to the client.
换句话说,一个 Action 是 http 请求的服务器端的完整实现,能够接受 play.api.mvc.Request
并做一些工作,并且 return play.api.mvc.Result
在您的示例中,操作不使用请求中的任何内容,return是一个静态 HTTP 200 响应,内容为 hello
编辑: 从此处的评论看来,您遇到的问题是代码示例中的 Action
未得到解决。
这样做的原因是,这实际上不是对 play.api.mvc.Action
的引用,而是构造 Actions.
此辅助方法在 play.api.mbc.AbstractController
中定义,您可以对其进行扩展以使用它。
例如:
class CacheRouter @Inject()(cc: ControllerComponents) extends AbstractController(cc) with SimpleRouter {
override def routes: Routes = {
case GET(p"/") =>
Action {
Results.Ok(s"Hello")
}
}
}
}
请记住,以上是使用 Plays guice
集成进行依赖项注入,但这只是众多可用选项之一。