我是 Play Framework 的新手,并試圖理解SimpleRouter類。在 Play 檔案中,我看到了一個簡單的示例:
val router = Router.from {
case GET(p"/hello/$to") =>
Action {
Results.Ok(s"Hello $to")
}
}
但我不確定它是什么Action以及它的意義是什么?我看到它在所有其他路由方法中也被大量使用。這是檔案的鏈接:
我的參考代碼:
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)
}
}
uj5u.com熱心網友回復:
根據此處播放檔案的操作是
基本上是一個 (play.api.mvc.Request => play.api.mvc.Result) 函式,它處理請求并生成要發送給客戶端的結果。
換句話說,Action 是 http 請求的服務器端的完整實作,能夠接受 aplay.api.mvc.Request并做一些作業并回傳 aplay.api.mvc.Result
在您的示例中,操作是不使用請求中的任何內容并回傳帶有內容的靜態 HTTP 200 回應的操作hello
編輯:從這里的評論看來,您遇到了Action代碼示例中的問題沒有得到解決。這樣做的原因是,這實際上不是對 的參考,play.api.mvc.Action而是構造動作的輔助方法。
定義了這個幫助方法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")
}
}
}
}
請記住,上面是使用 Playsguice集成進行依賴注入,但這只是眾多可用選項之一。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/440186.html
上一篇:正確不使用理解Scala
