Scotty   ルーティング

ホーム


ルーティング

Web サービスや Web アプリケーションにおいて、命令を受け付ける窓口を「ルート」 と言います。そして、ルートと命令を結びつけることを「ルーティング」と言います。 具体的に言うと、URL の最後につける / はルートです。 ブラウザに URL を入力する際に、最後の /スラッシュは省略することができますが、 ブラウザが自動的に補完して、/ をつけてWeb サービスに命令を送っています。 命令の種類には「GET」「POST」「PUT」「DELETE」などがあります。この章では、 その中から「GET」について紹介したいと思います。

Stack のインストール

macOS


$ curl -sSL https://get.haskellstack.org/ | sh
    

Windows

下記サイトよりインストーラーをダウンロード

Get Started with Haskell Windows

Linux


$ wget -qO- https://get.haskellstack.org/ | sh
    

詳しくは下記サイトを参照

Get started with Haskell

プロジェクトの作成

よりシンプルな形にするために、プロジェクトを手動で作成します。


$ mkdir scotty-web
$ cd scotty-web
$ mkdir src
    

Cabal ファイルの作成

「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
    

Main.hs の作成

「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
    


3374 visits
Posted: Feb. 19, 2019
Update: Feb. 28, 2019

ホーム   ページトップ