Scotty を用いた “ゆるふわ” Web サービス作成
KrdLab
(2014/02/16)
はじめに
 Yesod も良いけれど,
 ゆるりと,ふわりと,お手軽に

 Scotty を使って Web サービスを作ってみましょう
 そんな主旨
 (Haskell の基本文法については,ここまでの発表で既に触れているに違いない)
Scotty 概要
 Ruby の Sinatra ライクな Web Framework
 ‘Scotty is the cheap and cheerful way to write RESTful,
declarative web ap...
基本的な書き方
書式: {method} {route-pattern} {したいこと}
get

"/" $
file "/var/www/simple-webapp/index.html"

post "/memos" $ do
data ...
Route Pattern
 capture
 get "/foo/:bar" のように書くと,これになる
 コロンでパラメータを表現できる

 regex
 正規表現を使える

 function
 関数でパターンを記述できる
...
Request
 request

 リクエスト本体

 reqHeader

 ヘッダを返す

 body

 ボディを返す

 param, params
 パラメータを返す

 jsonData

 ボディをパースして...
Response and Redirecting
 status
 ステータスをいじる

 addHeader, setHeader
 ヘッダをいじる

 redirect
 リダイレクトを返す

こっちもほら
Setting Response Body
 text
 html

 file
 json
 source
 Conduit でボディを構築する

 raw
 ByteString をそのまま返す

いけそうじゃない?
例外処理
 raise :: Text -> ActionM a

当然エラー処理もね

 例外を投げる
 捕まえないと,クライアントに 500 として返る

 rescue :: ActionM a -> (Text -> Actio...
単純なメモアプリ
 https://github.com/krdlab/examples/tree/master/simple-scottywebapp
 試す時は以下の手順で
 $ cabal sandbox init
 $ caba...
おわりに
 気軽さを感じられたでしょうか?
 ちょっと persistent 周りがつらかったかもしれませんね…

 参考
 http://hackage.haskell.org/package/scotty
 https://www...
Upcoming SlideShare
Loading in …5
×

Scotty を利用した "ゆるふわ" Web サービス作成

1,626 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,626
On SlideShare
0
From Embeds
0
Number of Embeds
44
Actions
Shares
0
Downloads
3
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Scotty を利用した "ゆるふわ" Web サービス作成

  1. 1. Scotty を用いた “ゆるふわ” Web サービス作成 KrdLab (2014/02/16)
  2. 2. はじめに  Yesod も良いけれど,  ゆるりと,ふわりと,お手軽に  Scotty を使って Web サービスを作ってみましょう  そんな主旨  (Haskell の基本文法については,ここまでの発表で既に触れているに違いない)
  3. 3. Scotty 概要  Ruby の Sinatra ライクな Web Framework  ‘Scotty is the cheap and cheerful way to write RESTful, declarative web applications.’ (引用元 → http://hackage.haskell.org/package/scotty)
  4. 4. 基本的な書き方 書式: {method} {route-pattern} {したいこと} get "/" $ file "/var/www/simple-webapp/index.html" post "/memos" $ do data <- jsonData memo <- saveMemo data json memo delete "/memos/:id" $ do mid <- param "id" deleteMemo mid noContent
  5. 5. Route Pattern  capture  get "/foo/:bar" のように書くと,これになる  コロンでパラメータを表現できる  regex  正規表現を使える  function  関数でパターンを記述できる  「リクエストの内容が~の時にマッチさせる」みたいな  literal  コロンが特殊扱いされない 基本的に capture をよく 使います
  6. 6. Request  request  リクエスト本体  reqHeader  ヘッダを返す  body  ボディを返す  param, params  パラメータを返す  jsonData  ボディをパースして JSON オブジェクトを返す  失敗すると例外が飛ぶ (← rescue で対応)  files  アップロードされたファイルを返す 簡単なことなら すぐできそうですよね
  7. 7. Response and Redirecting  status  ステータスをいじる  addHeader, setHeader  ヘッダをいじる  redirect  リダイレクトを返す こっちもほら
  8. 8. Setting Response Body  text  html  file  json  source  Conduit でボディを構築する  raw  ByteString をそのまま返す いけそうじゃない?
  9. 9. 例外処理  raise :: Text -> ActionM a 当然エラー処理もね  例外を投げる  捕まえないと,クライアントに 500 として返る  rescue :: ActionM a -> (Text -> ActionM a) -> ActionM a  例外を捕まえる  param や jsonData 等で発生する例外を補足して,400 を返すとか  next :: ActionM a  次の Route Pattern に処理を渡す
  10. 10. 単純なメモアプリ  https://github.com/krdlab/examples/tree/master/simple-scottywebapp  試す時は以下の手順で  $ cabal sandbox init  $ cabal install --only-dependencies  $ cabal build
  11. 11. おわりに  気軽さを感じられたでしょうか?  ちょっと persistent 周りがつらかったかもしれませんね…  参考  http://hackage.haskell.org/package/scotty  https://www.fpcomplete.com/school/starting-with-haskell/libraries-andframeworks/persistent-db  http://ocharles.org.uk/blog/posts/2013-12-05-24-days-of-hackage-scotty.html  http://adit.io/posts/2013-04-15-making-a-website-with-haskell.html

×