Finatra 야루조이 (① 셋업 편)

11359 단어 finagleFinatraScala

리포지토리



Finatra란?



공식에서 인용

Finatra is a Scala services framework built on top of TwitterServer and Finagle.

twitter가 개발하고 있는 tiwtterServerFinagle 를 바탕으로 해서 만든 프레임워크입니다.

설정



엄청난 설정이 쉽습니다. copipe에서 지역은 일어납니다. (예외가 있으면 죄송합니다)
여기를 참고했습니다: h tps:// 퀵했다. 작은 m / 타카시 오가와 / MS / 53D C42f0 A b6c6377f7 A
메모로서도 써 가므로 참고로 해 가는 소스도 갑니다. (Github의 이슈라든지)

환경


  • MacOS X
  • Intellij IDEA (*)
  • sbt

  • (*) 터미널에서도 구축할 수 있습니다.

    프로젝트 만들기



    두 가지 방법을 소개합니다.
  • intelliJ 사용
  • sbt new 예 (권장)

  • intellij 사용



    intelliJ에 Scala 플러그인 도입

    intellij를 열고 ⌘,를 두드리면 설정 화면이 나오므로 왼쪽 상단의 검색 창에 plugins를 입력하고 Enter그런 다음 중간 검색 창에 Scala를 입력합니다 Enter.
    로 할 수 있었던 이 녀석입니다.



    설치 클릭하고 오른쪽 하단의 apply를 누르면 완료.

    다시 시작하여 프로젝트 만들기

    이 화면이 표시되므로 + Create New Project를 누릅니다.



    왼쪽에서 scala를 선택하면 중간에 선택이 나옵니다.


    stb를 선택하고 Next를 누르면 프로젝트의 이름과 디렉토리를 묻는 메시지가 표시됩니다.
    그러면 에디터 화면이 되어 마음대로 디렉토리 구조가 되어 있습니다.



    빌드 정의



    그런 다음 기본 디렉토리 바로 아래 build.sbt에 다음 코드를 복사하십시오. 이미 만들어진 코드도 필요 없습니다.

    build.sbt
    lazy val root = (project in file(".")).
      settings(
        name := "twitter-clone",
        scalaVersion := "2.12.8",
        libraryDependencies ++= dervy,
        resolvers ++= resolve
      )
    
    lazy val dervy = {
      Seq(
        "com.twitter" %% "finatra-http" % "19.2.0"
      )
    }
    
    lazy val test = {
      Seq("com.twitter" %% "finatra-http" % "19.2.0" % "test" classifier "tests")
    }
    
    lazy val resolve = {
      Seq(
        Resolver.sonatypeRepo("releases"),
        "Twitter Maven" at "https://maven.twttr.com"
      )
    }
    

    이것으로 보존하면 오른쪽 하단에 Sync dependency 라든지 넉넉하게 나오므로 Sync(동기)하는 쪽을 눌러 주세요. IntelliJ가 마음대로 finatra의 의존관계를 주입(동기)해 줍니다.
    다음 항목은 건너 뛰십시오.

    sbt new 한다



    좋아하는 디렉토리에서
    sbt new robinske/hello-finatra.g8
    

    프로젝트 이름을 듣지만 여기도 좋아하십시오.
    그러면 이런 느낌.
    himatra/
    ├── build.sbt
    ├── project
    │   └── build.properties
    └── src
        └── main
            ├── resources
            │   └── logback.xml
            └── scala
                └── Server.scala
    

    서버 시작, 라우팅 처리 추가


    ./src/main/scara/main.scala에 다음 코드를 복사하십시오.

    main.scala
    import com.twitter.finagle.Http
    import com.twitter.finagle.http.Request
    import com.twitter.finagle.stats.NullStatsReceiver
    import com.twitter.finagle.tracing.NullTracer
    import com.twitter.finatra.http.filters.HttpResponseFilter
    import com.twitter.finatra.http.routing.HttpRouter
    import com.twitter.finatra.http.{Controller, HttpServer}
    
    object Main extends FinatraBenchmarkServer
    
    class FinatraBenchmarkServer extends HttpServer {
      // 色々な設定項目はBaseHttpServerを参照
      // override def defaultFinatraHttpPort: String = ":9000"
      // override def defaultHttpServerName: String = "0.0.0.0"
    
      override def configureHttpServer(server: Http.Server) = {
        server
          .withCompressionLevel(0)
          .withStatsReceiver(NullStatsReceiver)
          .withTracer(NullTracer)
      }
    
      override def configureHttp(router: HttpRouter): Unit = {
        router
          .filter[HttpResponseFilter[Request]]
          .add[FinatraBenchmarkController]
      }
    }
    
    class FinatraBenchmarkController extends Controller {
      private[this] val helloWorldResponseText = "Hello, World!"
    
      get("/json") { request: Request =>
        Map("message" -> "Hello, World!")
      }
    
      get("/plaintext") { request: Request =>
        helloWorldResponseText
      }
    }
    

    저장하면 sbt shell (없으면 화면 왼쪽 하단의 그것 같은 사촌을 클릭하여 나온다.)
    sbt:project-name> run -http.port=:9000 -http.name=:localhost
    

    두드리는.
    [info] Running Main -http.port=:9000 -http.name=:localhost
    

    그리고 나오면 OK

    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J : See h tp // w w. slf4j. rg/코로 s. HTML # S for further details.

    라든지 나오지만 무시하고 괜찮습니다.

    확인



    자신은 Postman을 사용하고 있습니다. cURL이라고 좋지 않았습니다.http://localhost:9000/json를 두드려 봅시다.


    {"message":"Hello, World!"} 라고 돌아오면 성공.

    덧붙여서 헤더는

    header.txt
    Date : Sun, 03 Mar 2019 07:00:03 GMT
    Server : Finatra
    Content-Length : 27
    Content-Type : application/json; charset=utf-8
    

    이상.

    좋은 웹페이지 즐겨찾기