Web サービスや Web アプリケーションにおいて、命令を受け付ける窓口を「ルート」 と言います。そして、ルートと命令を結びつけることを「ルーティング」と言います。 具体的に言うと、URL の最後につける / はルートです。 ブラウザに URL を入力する際に、最後の /スラッシュは省略することができますが、 ブラウザが自動的に補完して、/ をつけてWeb サービスに命令を送っています。 命令の種類には「GET」「POST」「PUT」「DELETE」などがあります。この章では、 その中から「GET」について紹介したいと思います。
macOS
$ curl -sSL https://get.haskellstack.org/ | sh
Windows
下記サイトよりインストーラーをダウンロード
Get Started with Haskell WindowsLinux
$ wget -qO- https://get.haskellstack.org/ | sh
詳しくは下記サイトを参照
Get started with Haskellよりシンプルな形にするために、プロジェクトを手動で作成します。
$ mkdir scotty-web
$ cd scotty-web
$ mkdir src
「scotty-web」プロジェクト内に、次の内容の「scotty-web.cabal」という ファイルを作ります。
name: scotty-web
version: 0.1.0.0
category: Web
build-type: Simple
cabal-version: >=1.10
executable scotty-web
main-is: Main.hs
build-depends: base >=4.9 && <4.10
, scotty
hs-source-dirs: src
default-language: Haskell2010
「scotty-web」プロジェクト内の「src
」ディレクトリ内に、
次の内容の「Main.hs
」というファイルを作ります。
{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty
import Data.Monoid ((<>))
main = scotty 3000 $ do
get "/" $ do
html $ "<h1>こんにちは</h1>"
<> "<h3>スコッティ!</h3>"
<> "<p>今日はいかがですか</p>"
get "/:word" $ do
beam <- param "word"
html $ "<h1>こんにちは</h1>"
<> "<h3>" <> beam <> " さん!</h3>"
<> "<p>今日はいかがですか</p>"
ビルド
$ stack init
$ stack build
初回のビルドは「Scotty」の開発環境と実行環境をインストールするため、 非常に時間がかかります。2回目からのビルドはすぐに終わります。 「stack init」は、初回の1回だけで構いません。
実行
$ stack exec scotty-web
Setting phasers to stun... (port 3000) (ctrl-c to quit)
ブラウザを起動して「https://localhost:3000/
」へアクセスすると、次のように表示されます。
「https://localhost:3000/太郎
」とすると、次のように表示されます。
終了させるには、 ターミナルで、「Control」キー押しながら「c
」
を押します。
^C