Play2.0 for scala

* 如果在Application里的Action用了TODO ,在访问时会返回“503,还没实现”的HTTP回复

* Form表单的提交,是根据处理提交的方法,在Routes文件里对应的Post/Get方式,来确定提交的方式。

* Evolutions ,与DB脚本有关。

* Anorm包里的类是用来做Sql处理的。

& Actions,Controllers和Results

  Action:用来接收请求并进行处理。是一个(play.api.mvc.Request => play.api.mvc.Result)函数。处理Request并返回给客户端一个生成的结果。

  构建一个Action:play.api.mvc.Action伴生对象提供很多帮助类来构建一个Action值。

  • 最简单的就是带一个返回Result的表达式块作为参数。

 

Action{

  Ok("Hello world")

}

 

 

  • 带一个Request => Result的函数来构建:
Action{ request =>

  Ok("Got request [" + request + "]")

}
  • 会经常把request参数标记为implicit(隐式)的,这样可以隐式地被其他需要它的API隐式调用。
Action{ implicit request =>

  Ok("Got request [" + request + "]")  

}
  • 最后一种就是指定一个内容解析(BodyParser)的参数:
Action(parse.json){ implicit request =>

  Ok("Got request [" + request + "]")

}


& Controllers 是Action生成器

  它就只是一个Action的生成器。是单例的对象。最简单的使用就是继承自Controller对象就行了。  

& 简单的结果(result)

  到现在为止,我们只是关心简单结果:一个有状态码的HTTP结果,一个返回给web客户端的HTTP header和body的集合。这些全都定义在play.api.mvc.SimpleResult里。

def index = Action {

  SimpleResult(

    header = ResponseHeader(200, Map(CONTENT_TYPE -> "text/plain")), 

    body = Enumerator("Hello world!")

  )

}

当然,也有一些帮助类,比如Ok。有如下一些结果:

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")

都可以在play.api.mvc.Results特质及伴生对象里找到。

$ 重定向也是一种简单的结果

  Redirects也是一种简单结果,但不带response body 。

$ TODO :现在先不实现,等会实现。

 

 

 

 

 

你可能感兴趣的:(scala)