Python Webフレームワーク “Bottle”

超軽量WebフレームワークBottleを試してみました。

Bottleとは

Bottle is a fast, simple and lightweight WSGI micro web-framework for Python.

Bottle公式より

仮想環境の構築

pipenvで仮想環境を構築します。
pipenvについては前記事で書きましたのでご覧ください。

MacのPython環境を整える 2019年版

 

適当なディレクトリを作成して移動します。例えば次のとおり。

Pythonとbottleをインストール。
Pythonは、前記事でインストールしたバージョン3.7.3です。

 

静的ルーティング

チュートリアルに習って、まずはHello Worldを表示するWebサーバを立ち上げてみます。
最初にhelloworld.pyを作成します。

run()は待ち受けするホスト名とポート番号を指定してWebサーバを起動するものです。上記のスクリプトを実行すると、http://localhost:8080で待ち受けるWebサーバが立ち上がります。

@routeデコレータはルーティングを指定するものです。上記のスクリプトでは、ブラウザでhttp://localhost:8080/helloにアクセスしたときにhello()が実行されます。

それでは、スクリプトを実行してWebサーバを起動してみましょう。
http://localhost:8080で待ち受けるサーバが起動しました。

 

ブラウザでアクセスするとHello World!が表示されました。非常に簡単です。

ルーティングできないURLにアクセスすると404エラーが発生します。

Webサーバの終了はCtrl+cです。

動的ルーティング

helloworld.pyを次のとおり書き換えました。
最終行のreloader=Trueは、スクリプトを書き換えたときにWebサーバを自動的に再起動してくれる設定。

 

http://localhost:8080/hello/にアクセスしてみました。

http://localhost:8080/hello/hogeにアクセスしてみました。

http://localhost:8080/hello/mogeにアクセスしてみました。

http://localhost:8080/hello/<name>の<name>の部分応じて、結果が変わりました。
ここで、Webサーバを終了(CTRL+c)させます。

 

HTTPリクエストメソッド

GET、PUT、DELETE、PATCHのメソッドをデコレータで使い分けることが出来ます。

 

@routeデコレータに引数method='GET'を指定するとGET。引数を省略したときのデフォルトもGET。
@getデコレータによって指定することもできます。

@routeデコレータに引数method='POST'を指定するとPOST。@postデコレータによって指定することもできます。

同じアドレスで、GETとPOSTの両方を待ち受けることが可能。

 

Webサーバを起動します。

 

http://localhost:8080/loginにアクセス。GETに対する応答が返ってきます。

UsernameとPasswordを入力してLoginボタンを押すと、POSTに対する応答が返ってきます。
うまくいった。

HTTPのみならず、サーバとクライアント間でJSONやXMLなどを受け渡しできます。Webアプリを作るのに良さそうです。

以上です。

Leave a Comment

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください