python用のWebフレームワーク「Flask」をとりあえず動かしてみる







Rails以外で軽くて良いWebフレームワーク無いかな、と思って探していたらPython製Webフレームワーク「Flask」が軽量で良さげだったのでとりあえず動かしてみます。

Flask公式QuickStart

環境

pythonは環境構築の奥が深く、堅牢な形で動かそうとすると結構時間と理解を要するので、とりあえず手元のMacで最速で動かせる方法を選択しました。

brew installでpython3とpip3が入っている環境だったので、素朴にflaskをpip3でインストールします。

pip3 install flask

環境のポータビリティを重視するなら、docker上で動かしたり、vertualenvを使ったりいろいろ方法はありますが、一旦今回は省略。

最小構成のコードを記述

プロジェクトルート以下にflask_server.pyを作成します。

flask_server.py

from flask import Flask

app = Flask(__name__)

# ルーティングパスを指定
@app.route('/')
def hello_world():
    return 'Hello,World'

各種基本的なルーティング

@app.route('/')
def hello_world():
    return 'Hello,Flask!'

@app.route('/hello')
def hello():
    return 'Hello,World!'

# URLの文字列のusernameを引数として受け取る
@app.route('/user/<username>')
def show_user_profile(username):
    return 'User %s' % username

# URLのpost_id(整数)を引数として受け取る
@app.route('/post/<int:post_id>')
def show_post(post_id):
    return 'Post %d' % post_id

# URLのsubpathを引数として受け取る
@app.route('/path/<path:subpath>')
def sgow_subpath(subpath):
    return 'Subpath %s' % subpath


jsonを吐き出す

標準ライブラリのjsonと併用する


import json

# ***

@app.route('/api/json')
def api_json():
    json_obj = {"hello":"flask!"}
    return json.dumps(json_obj)

起動


export FLASK_APP=flask_server.py
export FLASK_ENV=development # デフォルトだとproductionで起動する
flask run

Flaskはデフォルトではポート5000番をバインドするので、127.0.0.1:5000にアクセスします。

画面上に「Hello,World!」と表示されればOK