8
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

Organization

KotlinとSparkでWebアプリケーション①(準備とHello World!編)

検証環境

この記事の内容は、以下の環境で検証しました。

  • Intellij IDEA ULTIMATE 2017.2
  • Kotlin 1.1.4-3
  • Spark 2.6.0
  • Gradle Projectで作成

目標

Spark Framework(以降、『Spark』と表記)を使用して最も簡単なWebアプリケーションをKotlinで作成する事

今回の流れ

  • Sparkの簡単な概要
  • 事前準備
  • 実装
  • 実行
  • まとめと次回の予定

Sparkの簡単な概要

今回紹介するSparkは上記のwebアプリケーション構築用のmicro frameworkです。
似たものでApache Sparkがあるが、それとは全くの別物です。名前が似てるだけ!

Webアプリケーションを構築すると、サーバはどーしようとか、設定ファイルはどーやって書くんだろうと覚えることが多くて、すこーしハードルが高い気がする。

このフレームワークはmainメソッドやmain関数だけで構築出来ちゃう。
フレームワークにサーバも組み込まれているので、実行も簡単!サーバは「Jetty(https://www.eclipse.org/jetty/ )」が組み込まれている。
サイトのトップに「最小限の努力で作れちゃう」と謳っているとおり、簡単に作成できる!

事前準備

準備はいたって簡単。ライブラリを1つ追加するだけ。

gradleの場合は以下を追記

compile 'com.sparkjava:spark-core:2.6.0'

Mavenの場合は以下を追記

<dependency>
    <groupId>com.sparkjava</groupId>
    <artifactId>spark-core</artifactId>
    <version>2.6.0</version>
</dependency>

実装

Sparkのライブラリを追加出来てたら、実装してみる。
実装例は以下の通り。

SparkSample.kt
package jp.co.casareal.kotlin_spark

import spark.Spark.get

fun main(args: Array<String>) {
    get("/hello") { request, response -> "Hello World!" }
    get("/bye") { request, response -> "Bye!" }
}

spark.Spark.getメソッドの説明

内容はすごく単純。
第一引数の文字列でしているURLにHTTPのGETメソッドでアクセスすると、第二引数の処理を行い。文字列をレスポンスとして返す。引数のrequestはHttpServletRequest、responseはHttpServletResponseのオブジェクト。

今回は、「/hello」にアクセスすると「Hello World!」、「/bye」にアクセスすると「Bye!」がレスポンスとして返る。

その他のメソッド

getの他にもpost、put、deleteなども用意されている。

実行

実行するとサーバが起動して、デプロイします。

アクセスするURLは以下の通りです。
URLをみてわかるようにデフォルトのポートは4567。

http://localhost:4567/hello

スクリーンショット 2017-09-29 14.25.25.png

http://localhost:4567/bye

スクリーンショット 2017-09-29 14.25.34.png

まとめと次回の予定

SparkでWebアプリケーションを構築すると簡単に作れちゃいます。
しかもmain関数(メソッド)だけで完結するので、プログラミングを初めて行う人にもとっつきやすい気がする。

次回は、パラメータを取得する方法でも書く。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
8
Help us understand the problem. What are the problem?