Finatra 야루조이 (① 셋업 편)
리포지토리
Finatra란?
공식에서 인용
Finatra is a Scala services framework built on top of TwitterServer and Finagle.
twitter가 개발하고 있는 tiwtterServer 과 Finagle 를 바탕으로 해서 만든 프레임워크입니다.
설정
엄청난 설정이 쉽습니다. copipe에서 지역은 일어납니다. (예외가 있으면 죄송합니다)
여기를 참고했습니다: h tps:// 퀵했다. 작은 m / 타카시 오가와 / MS / 53D C42f0 A b6c6377f7 A
메모로서도 써 가므로 참고로 해 가는 소스도 갑니다. (Github의 이슈라든지)
환경
(*) 터미널에서도 구축할 수 있습니다.
프로젝트 만들기
두 가지 방법을 소개합니다.
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
이상.
Reference
이 문제에 관하여(Finatra 야루조이 (① 셋업 편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/higherKindPudding/items/06c2666fb0e85a4c85ed텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)