第一章 Actions、Controllers与Results¶
什么是Action¶
Play应用中大多数的请求都是通过 Action
来处理。 Action
本质上是一个函数, (play.api.mvc.Request => play.api.mvc.Result)
,它接收请求,处理之后再响应客户端。
def echo = Action { request =>
Ok("Got request [" + request + "]")
}
创建Action¶
最简单的方式:
Action {
Ok("Hello world")
}
接收请求数据:
Action {implicit request =>
Ok("Got request [" + request + "]")
}
指定 Bodyparse
参数:
Action(parse.json) { implicit request =>
Ok("Got request [" + request + "]")
}
Controllers是Action生成器¶
Controllers
用于生成 Action
。
package controllers
import play.api.mvc._
class Application extends Controller {
def index = Action {
Ok("It works!")
}
}
简单结果¶
响应结果通过 play.api.mvc.Result
来定义。
import play.api.http.HttpEntity
def index = Action {
Result(
header = ResponseHeader(200, Map.empty),
body = HttpEntity.Strict(ByteString("Hello world!"), Some("text/plain"))
)
}
不过play提供了快捷方法 Ok()
:
def index = Action {
Ok("Hello world!")
}
其它简便方法:
val ok = Ok("Hello world!")
val notFound = NotFound
val pageNotFound = NotFound(<h1>Page not found</h1>)
val badRequest = BadRequest(views.html.form(formWithErrors))
val oops = InternalServerError("Oops")
val anyStatus = Status(488)("Strange response type")
重定向¶
def index = Action {
Redirect("/user/home")
}