Scalatra를 사용해보십시오

7349 단어 ScalatraScala

전치



이전에는 직장에서 PlayFramework를 사용하고 있었지만, 다른 Scala 계 웹 프레임 워크는 전혀 접한 적이 없었습니다.
이번에는 공부가 테라 그 외의 프레임 워크를 만져 보려고 생각합니다.

이번 만져 보는 것은 Scalatra입니다.

Scalatra is a simple, accessible and free web micro-framework.
It combines the power of the JVM with the beauty and brevity of Scala, helping you quickly build high-performance web sites and APIs.

공식 사이트에 따르면 간단하고 Scala의 아름다움과 간결성을 결합하여 고성능 웹 사이트와 API를 신속하게 구축 할 수 있습니다. 라는 것입니다.
현재 안정적인 최신 버전은 2.6.5와 같습니다.

사전 준비



Scalatra를 이동하는 데 필요한 다음을 설치
  • Java 1.8 이상
  • sbt 0.13.13

  • Scalatra 프로젝트 생성



    원하는 곳에 디렉토리를 만들고 다음 명령을 실행합니다.sbt new scalatra/scalatra.g8↑를 실행하고 잠시 후 여러가지 듣기 때문에 적절히 입력한다
    ※지금 현재, 디폴트 설정의대로라면, scalatra_version [2.7.0-RC1] 를 다운로드하는 것 같습니다.

    움직여 보자



    완성된 프로젝트를 실행해 봅니다.
    프로젝트 루트에서 다음 명령을 실행합니다.
    $ sbt
    sbt:My Scalatra Web App> jetty:start
    

    이렇게하면 http://localhost:8080에서 서버가 시작됩니다.
    액세스하고 아래 화면이 표시되면 시작 성공입니다.


    보충



    개발중은, ~;jetty:stop;jetty:start (으)로 서버를 기동하는 것으로, 소스 코드에 변경이 들어갔을 경우에 자동적으로 반영되므로, 서버의 재기동이 불필요하게 되어 편리합니다.
    ※단, 자동 검지되는 것은 Scala의 소스만으로, 템플릿 엔진(Twirl등)에 변경이 들어갔을 경우는 스루 되는 것 같습니다.

    만든 프로젝트의 내용을 살펴보기



    자동 생성된 프로젝트의 트리는 이런 식으로 되어 있습니다.

  • ScalatraBootstrap ⇒ 기동 클래스. 여기에 Controller가 등록되어 있다. 다른 Controller 추가 가능.
  • MyScalatraServlet ⇒ Controller. 여기에 라우팅 및 Action 처리를 작성하십시오
  • twirl 디렉토리 부하 ⇒ Twirl Scalatra 디폴트로 사용 가능한 템플릿 엔진. Play에서 채택한 것과 동일

  • 라우팅



    Scalatra 라우팅의 몇 가지 예를 살펴 보겠습니다.

    MyScalatraServlet
    package com.example.app
    
    import org.scalatra._
    
    class MyScalatraServlet extends ScalatraServlet {
    
      // GET / に対応
      get("/") {
        // twirlのテンプレート呼び出し
        views.html.hello()
      }
    
      // 条件による分岐 GET /で何かしらクエリストリングがあるケースに対応
      get("/", request.queryString.nonEmpty) {
        // 単純な文字列でもOK
        "query string is existing"
      }
    
      // GET /test?name=***に対応 paramsからnameの値を取得可能
      get("/test") {
        // HTMLタグをそのままでもOK
        <h1>Hello, { params("name") }</h1>
      }
    
      // GET /test/***に対応 こっちもparamsからnameの値を取得可能
      get("/test/:name") {
        <h1>Hello, { params("name") }</h1>
      }
    
      // 403を返す
      get("/forbidden") {
        Forbidden { <h1>Forbidden !!</h1> }
      }
    
      // 404を返す その1
      get("/notFound1") {
        // NotFoundメソッドを呼ぶやり方
        NotFound { <h1>Not Found !!</h1> }
      }
    
      // 404を返す その2
      get("/notFound2") {
        // haltメソッドで詳細な情報を返すやり方
        halt(
          status = 404,
          body = <h1>Not Found!!</h1>,
          headers = Map(
            "X-Hoge" -> "hoge",
            "X-Fuga" -> "fuga",
          )
        )
      }
    }
    
    

    촉촉한대로 간단합니다. 이해하기 쉽다고 생각합니다.

    마지막으로



    촉감만 소개해 보았습니다. 꽤 사용하기 쉬운 냄새가납니다.
    PlayFramework는 조금 여러가지 포함되어 있어 너무 고민하다고 하는 경우에는 Scalatra를 채용하는 것도 있을지도 모릅니다.
    앞으로 간단한 REST API 서버를 작성할 기회가 있었을 경우는 꼭 사용해 가고 싶습니다.

    좋은 웹페이지 즐겨찾기