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.)