Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

python版sinatraな軽量WEBフレームワークbottle

bottleはsinatraな軽量WEBフレームワークです。
getメソッドの取扱いレベルまで小分けされているので、限界域まで軽く作ることができます。

導入

例の如く、pipで。依存パッケージは無いように設計されているみたいです。

$ pip install bottle

依存がなく、軽量……ということは直接導入という荒業も。
200kbyte程度なので、ワザワザpipを入れるほどでは……という場合にも重宝。

$ curl -O https://raw.githubusercontent.com/bottlepy/bottle/master/bottle.py

スクリプト本体

以下の構成の、簡単なアプリを考えてみます。

  • "~/hello/"でユーザに挨拶
  • "~/time"で現在時刻

bottleから"get"、"run"、"template"を拝借し、標準ライブラリのtimeを使って以下のように書きます。

from bottle import get, run, template
from time import strftime

@get('/hello/<name>')
def hello(name):
    return template('<b>Hello {{name}}</b>!', name=name)

@get('/time')
def show_time():
    return strftime('<p>%m-%d_%H:%M:%S_%Z</p>')

run(host='localhost', port=8080)

実行

$ python app.py

http://localhost:8080/timeにアクセスすると、"09-03_23:24:14_JST"みたいな文字列が
http://localhost:8080/hello/shuzoだと"Hello shuzo!"てな文字が太字で出てきます。