Scottyで簡易サーバ作成
つくったもの
ScottyでWeb API呼び出しを束ねる(予定)のServerを作成しました。Yesodは、俺にはまだ早かった。
構成
Web Browser -> Web Server (Scotty) -> API Server (Sinatra)
SinatraでAPI Server作成
Rubyの方が慣れているので、API Server側はRubyでサクッとつくる。
$ mkdir api $ cd api $ bundle init $ vim Gemfile $ bundle install
Gemfile
source "https://rubygems.org" gem "sinatra"
index.rb
require 'sinatra' get '*' do 'Hello World!' end
サーバ立ち上げる
$ ruby index.rb
Scottyでクライアント作成
$ mkdir server $ cd server $ cabal sandbox init $ cabal init $ vim server.cabal $ cabal install
server.cabal
-- Initial server.cabal generated by cabal init. For further -- documentation, see http://haskell.org/cabal/users-guide/ name: server version: 0.1.0.0 -- synopsis: -- description: license: MIT license-file: LICENSE author: Takeshi Takizawa maintainer: takitake.create@gmail.com -- copyright: category: Web build-type: Simple -- extra-source-files: cabal-version: >=1.10 executable server main-is: Main.hs -- other-modules: -- other-extensions: build-depends: base >=4.7 && <4.8 ,http-conduit ,scotty -- hs-source-dirs: default-language: Haskell2010
Main.hs
{-# LANGUAGE OverloadedStrings #-} import Web.Scotty import Network.HTTP.Conduit (simpleHttp) main :: IO () main = scotty 3000 $ do get "/:word" $ do res <- simpleHttp "http://localhost:4567/" raw res
サーバ立ち上げる
# ここの手順が自信ないです # 今時は、どうやるんだろ? $ cabal install $ ./dist/dist-sandbox-4f285b0c/build/server/server
動作確認
ブラウザで、 http://localhost:3000/ にアクセス。Hello World!が表示されること。
所感
Ruby | Haskell |
---|---|
Rails | Yesod |
Sinatra | Scotty |
httparty | http-conduit |
かなと。
- cabal installは、毎回buildするもの?gem installに比べもの凄い時間かかる
- ByteString.Lazyをどう表示したら良いか分からなくて、コンパイラに散々怒られて辛い