User.scala def addUser(name:String, email:String, pic_url:String, token:String) = Action{ val code:Int = Users.addUser(name, email, pic_url, token) val json:JsValue = JsObject( Seq(“code” -> JsNumber(code)) ) Ok(json).withSession( “USER_NAME” -> name, “USER_EMAIL” -> email, “PIC_URL” -> pic_url, “USER_TOKEN” -> token ) } Application.scala def javascriptRoutes = Action { implicit request => import routes.javascript._ Ok( Routes.javascriptRouter(“jsRoutes”)( User.addUser, ) ).as(“text/javascript”) } routes #User POST /User/addUser controllers.User.addUser(name:String, email:String, pic_url:String, token:String) # Javascript Route GET /javascriptRoutes controllers.Application.javascriptRoutes main.scala.html … <script type=”text/javascript” src=”@routes.Application.javascriptRoutes”></script> $.ajax( jsRoutes.controllers.User.addUser( response.name, response.email, response2.picture.data.url, response2.id ) ).done(function(data){ console.log(data.code); }); } ).fail(function(e){ console.log(e); }) … |
위와 같은 식으로 하면 굳이 Ajax 설정을 하지 않더라도 스크립트 내부에서 같은 함수 이름과 인자를 통해 송수신 한다는 자체가(것도 별다른 설정 없이) 놀랍지 않은가. 뭐 사실은 내부적으로 route.js 로 함수식으로 포팅해주곤 하지만, 그래도 편한건 사실이다.