Scalatra           Unfiltered      Завершение                Scala On Rest                Павел Залунин                29 и...
Scalatra                            Unfiltered                  ЗавершениеИсходные данные            Scalatra - http:// git...
Scalatra                            Unfiltered                          ЗавершениеScalatra      Легковесный веб-фреймворк. ...
Scalatra                          Unfiltered                   ЗавершениеScalatra      Обработка параметров:            Под...
Scalatra                         Unfiltered                   ЗавершениеScalatra      Тестирование (обертки для ScalaTest, ...
Scalatra                             Unfiltered               ЗавершениеChallenge (Scalatra)      Пример использования для ...
Scalatra                       Unfiltered                   ЗавершениеUnfiltered      Тулкит для обработки HTTP запросов. Пр...
Scalatra                           Unfiltered                         ЗавершениеUnfiltered      Использование различных беке...
Scalatra                       Unfiltered                         ЗавершениеUnfiltered      Для тестирования написаны обертк...
Scalatra                             Unfiltered                     ЗавершениеChallenge (Unfiltered)      Написание RESTful ...
Scalatra                 Unfiltered               ЗавершениеBenchmark: ab2 -c 9000 -n 10 (events/latest/1)Павел ЗалунинScal...
Scalatra                            Unfiltered                           ЗавершениеНа что обратить внимание            lift...
Scalatra                           Unfiltered                          ЗавершениеСсылки/Примеры использования            ht...
Scalatra        Unfiltered   Завершение      Все...Павел ЗалунинScala On Rest
Upcoming SlideShare
Loading in...5
×

Scala On Rest

2,204

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,204
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Scala On Rest

  1. 1. Scalatra Unfiltered Завершение Scala On Rest Павел Залунин 29 июня 2011 г.Павел ЗалунинScala On Rest
  2. 2. Scalatra Unfiltered ЗавершениеИсходные данные Scalatra - http:// github.com/scalatra/scalatra. Unfiltered - http:// github.com/n8han/Unfiltered.Павел ЗалунинScala On Rest
  3. 3. Scalatra Unfiltered ЗавершениеScalatra Легковесный веб-фреймворк. FilterExample extends ScalatraFilter (ScalatraFilter extends javax.servlet.Filter) ServletExample extends ScalatraServlet (ScalatraServlet extends javax.servlet.http.HttpServlet) request - RichRequest(HttpServletRequest), response - HttpServletResponse, session - RichSession(HttpSession), context - RichServletContext(HttpServletContext) get(route: String)(f: => Any) Поддерживаемые типы: Array[Byte], NodeSeq, Unit, AnyПавел ЗалунинScala On Rest
  4. 4. Scalatra Unfiltered ЗавершениеScalatra Обработка параметров: Поддержка именованных параметров: get("/hello/:name") Wildcards: get("/say/*/to/*) multiParams("splat") == Seq("hello", "world") Regexp: get("""^/f(.*)/b(.*)""".r) multiParams("captures") == Seq("oo", "ar")Павел ЗалунинScala On Rest
  5. 5. Scalatra Unfiltered ЗавершениеScalatra Тестирование (обертки для ScalaTest, Specs2, Specs): "events rest protected api" should { var user: User = null doFirst { val json = compact(render(Map("login" -> "pasha", "password" -> "54321"))) put("/api/user/new", json) { status must ==(200) user = parse(body).extract[User] } }Павел ЗалунинScala On Rest
  6. 6. Scalatra Unfiltered ЗавершениеChallenge (Scalatra) Пример использования для написание RESTful веб-сервиса с OAuth аунтефикацией. scalaz (scalatraz.scala, rest_api.scala) specs (rest_api.scala, utils.scala) lift-json info.whiter4bbit.oauth - behind mongodb (casbah) - behindПавел ЗалунинScala On Rest
  7. 7. Scalatra Unfiltered ЗавершениеUnfiltered Тулкит для обработки HTTP запросов. Предоставляет несколько бекендов: jetty, netty. Обработчики запросов - PartialFunction’s PartialFunction[HttpRequest[A], ResponseFunction[B]] Использование Pattern Matching для разбора запросов: case r @ PUT(Path("/public/user/new")) case GET(Path(Seg("events"::"latest"::int(num)::Nil))) case GET(Path("/protected/user/info")) & request Использование комбинаторов для обработки запроса (library/src/main/scala/response.scala): Created ~> ResponseString("Record created") MethodNotAllowed ~> ResponseString("Must be GET")Павел ЗалунинScala On Rest
  8. 8. Scalatra Unfiltered ЗавершениеUnfiltered Использование различных бекендов: Jetty/Servlet container - HttpRequest[HttpServletRequest]. val app: javax.servlet.Filter = unfiltered.filter.Planify { ... } unfiltered.jetty.Http.local(8080).filter(app).run Netty - HttpRequest[ReceivedMessage]. val hello = unfiltered.netty.cycle.Planify { ... } unfiltered.netty.Http(8080).handler(app).run()Павел ЗалунинScala On Rest
  9. 9. Scalatra Unfiltered ЗавершениеUnfiltered Для тестирования написаны обертки для Specs и ScalaTest. Для отправки запросов используется dispatch-dispatch. def addUser(login: String, password: String, f: PutResponse) = { val credentials = Map("login" -> login, "password" -> password) h(host / "public" / "user" / "new" <<< compact(render(credentials)) as_str f) } "create user with valid data" in { addUser("pasha", "123", { case (code, _, _, _) => code must_==200 }) }Павел ЗалунинScala On Rest
  10. 10. Scalatra Unfiltered ЗавершениеChallenge (Unfiltered) Написание RESTful веб-сервиса аналогичного, написанному с использованием scalatra. unfiltered (rest_api.scala) unfiltered-oauth (host.scala, stores.scala) mongodb (casbah) (stores.scala, protected_api.scala) specs (rest_api.scala)Павел ЗалунинScala On Rest
  11. 11. Scalatra Unfiltered ЗавершениеBenchmark: ab2 -c 9000 -n 10 (events/latest/1)Павел ЗалунинScala On Rest
  12. 12. Scalatra Unfiltered ЗавершениеНа что обратить внимание liftweb (http:// liftweb.net) - фреймворк с большим количеством модулей (orm, mongodb, json, apmq, facebook и т.д.). circumflex (http:// cicrkumflex.ru) - scalatra-sinatra-like фреймворк.Павел ЗалунинScala On Rest
  13. 13. Scalatra Unfiltered ЗавершениеСсылки/Примеры использования https:// github.com/scalatra/scalatra https:// github.com/n8han/Unfiltered https:// github.com/n8han/All-Aboard https:// github.com/softprops/unfiltered-websockets.g8 https:// github.com/softprops/unfiltered-oauth-client.g8 https:// github.com/softprops/unfiltered-oauth-server.g8Павел ЗалунинScala On Rest
  14. 14. Scalatra Unfiltered Завершение Все...Павел ЗалунинScala On Rest
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×