14. Play framework
Simple
Great Testing Support
URL Routing
JPA/Ebean Support (Java only)
Class Reloading
NIO Server(Netty)
Share-Nothing
Asset Compiler
Java & Scala Support
i18n
Compile time checking
Instant deply on Heroku, Cloud bees
20. Simple > Http Result
Result.scala
def SeeOther(url: String): SimpleResult = Redirect(url, 303)
val BadRequest = new Status(400)
val NotFound = new Status(404)
val InternalServerError = new Status(500)
val NoContent = SimpleResult(
header = ResponseHeader(204),
body = Enumerator.empty,
connection = HttpConnection.KeepAlive)
}
์๋ต์ฝ๋์ ๋ฐ๋ฅธ
ํ๋์ ํ๋ ์ด๊ฐ ์์์ ~
21. Simple > Test
Integration
Test
browser.goTo("http://localhost:" + port)
browser.pageSource must contain("Hello")
Unit
Test
val home = route(FakeRequest(GET, "/")).get
status(home) must equalTo(OK)
contentType(home) must beSome.which("text/html")
contentAsString(home) must contain ("Hello")
31. Routes
Http method
Uri
Body (scala code)
GET
/
controllers.App.index
GET
/add
controllers.App.blank
POST
/article
controllers.App.insert
GET
/article/$num<d{9}>
controllers.App.details(num: Long)
POST
/article/:id
controllers.App.update(id: Long)
POST
/article/:id/delete
controllers.App.delete(id: Long)
GET
/assets/*file
controllers.Assets.at(path="/public", file)
32. Routes
Http method
Uri
Body (scala code)
GET
/
controllers.App.index
GET
/add
controllers.App.blank
POST
/article
controllers.App.insert
GET
/article/$num<d{9}>
controllers.App.details(num: Long)
POST
/article/:id
controllers.App.update(id: Long)
POST
/article/:id/delete
controllers.App.delete(id: Long)
GET
/assets/*file
controllers.Assets.at(path="/public", file)
48. Implicit
val db: DB = application.getDatabase()
def query(str: String)(db: DB): List[User]
val users = query("""SELECT * FROM USER""")(db)
val posts = query("""SELECT * FROM POST WHERE ...""")(db)
val pets = getPost("""SELECT * FROM PET""")(db)
49. Implicit
val db: DB = application.getDatabase()
def query(str: String)(db: DB): List[User]
val users = query("""SELECT * FROM USER""")(db)
val posts = query("""SELECT * FROM POST WHERE ...""")(db)
val pets = getPost("""SELECT * FROM PET""")(db)
50. Implicit
implicit val db: DB = application.getDatabase()
def query(str: String)(implicit db: DB): List[User]
val users = query("""SELECT * FROM USER""")(db)
val posts = query("""SELECT * FROM POST WHERE ...""")(db)
val pets = getPost("""SELECT * FROM PET""")(db)
51. Implicit
implicit val db: DB = application.getDatabase()
def query(str: String)(implicit db: DB): List[User]
val users = query("""SELECT * FROM USER""")
val posts = query("""SELECT * FROM POST WHERE ...""")
val pets = getPost("""SELECT * FROM PET""")