我在哪里可以找到Ok
,BadRequest
,InternalServerError
,NotFound
等方法的实现?
我查看了播放文档,但无法找到它。具体来说,我看了Results.class
,但那里的实现似乎与预期不同。例如,我们在代码中使用的Ok
方法接受如下参数:
Ok(views.html.index("Welcome")(userForm))
但Ok
中Results.class
的实施是
val Ok : Results.this.Status = { /* compiled code */ }
答案 0 :(得分:0)
在Scala中(在Play 2.5.x的例子中,其他版本的想法也类似):
Ok
的来源(BadRequest
非常相似):https://github.com/playframework/playframework/blob/2.5.x/framework/src/play/src/main/scala/play/api/mvc/Results.scala#L497
/** Generates a ‘200 OK’ result. */
val Ok = new Status(OK)
因此,Ok
是对象,Ok("some string")
是函数表示法中的对象。在对象表示法中,它是Ok.apply("some string")
apply
的 Status
代码是
/**
* Set the result's content.
*
* @param content The content to send.
*/
def apply[C](content: C)(implicit writeable: Writeable[C]): Result = {
Result(
header,
writeable.toEntity(content)
)
}
然后您可以转到Writeable
班级:https://github.com/playframework/playframework/blob/2.5.x/framework/src/play/src/main/scala/play/api/http/Writeable.scala
对于不同类型,有许多writables
,例如String
implicit def wString(implicit codec: Codec): Writeable[String] = Writeable[String](str => codec.encode(str))
您可以在此处找到