Scalatra를 사용해보십시오
전치
이전에는 직장에서 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를 이동하는 데 필요한 다음을 설치
Scalatra를 이동하는 데 필요한 다음을 설치
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등)에 변경이 들어갔을 경우는 스루 되는 것 같습니다.
만든 프로젝트의 내용을 살펴보기
자동 생성된 프로젝트의 트리는 이런 식으로 되어 있습니다.
완성된 프로젝트를 실행해 봅니다.
프로젝트 루트에서 다음 명령을 실행합니다.
$ sbt
sbt:My Scalatra Web App> jetty:start
이렇게하면 http://localhost:8080에서 서버가 시작됩니다.
액세스하고 아래 화면이 표시되면 시작 성공입니다.
보충
개발중은,
~;jetty:stop;jetty:start
(으)로 서버를 기동하는 것으로, 소스 코드에 변경이 들어갔을 경우에 자동적으로 반영되므로, 서버의 재기동이 불필요하게 되어 편리합니다.※단, 자동 검지되는 것은 Scala의 소스만으로, 템플릿 엔진(Twirl등)에 변경이 들어갔을 경우는 스루 되는 것 같습니다.
만든 프로젝트의 내용을 살펴보기
자동 생성된 프로젝트의 트리는 이런 식으로 되어 있습니다.
ScalatraBootstrap
⇒ 기동 클래스. 여기에 Controller가 등록되어 있다. 다른 Controller 추가 가능. MyScalatraServlet
⇒ Controller. 여기에 라우팅 및 Action 처리를 작성하십시오 라우팅
Scalatra 라우팅의 몇 가지 예를 살펴 보겠습니다.
MyScalatraServletpackage 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 서버를 작성할 기회가 있었을 경우는 꼭 사용해 가고 싶습니다.
Reference
이 문제에 관하여(Scalatra를 사용해보십시오), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/cobonas/items/7488d56cfebebf9ae3d5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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 서버를 작성할 기회가 있었을 경우는 꼭 사용해 가고 싶습니다.
Reference
이 문제에 관하여(Scalatra를 사용해보십시오), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cobonas/items/7488d56cfebebf9ae3d5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)