技術雑記帳兼日記帳

AWS、Python、Terraformの使い方をコッソリ

flask 経路と変数

flaskは使いやすいので掘り下げていこうと思う。

経路

1.ソース(server.py)

from flask import Flask
app = Flask(__name__)

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

@app.route('/py')
def py():
    return 'Hello, Python'

2.実行

今回はそのまま「python server.py」で実行するのではなく環境変数を使用した方法をとってみる。

$ export FLASK_APP=server.py
$  flask  run --port=80 --host=0.0.0.0

ソースにベタ書きするかは好みの差かな。

デバッグをONにする場合は、以下の環境変数を設定してrunすればいい。

$ export FLASK_ENV=development

3.結果

http://IPアドレス/
「Hello, World」
http://IPアドレス/py
「Hello, Python
になるので、route()が効いていることがわかる。
公式曰く「もっとできることがあります!」らしいので、また調べてみる。

変数

ざっくり説明すると、routeに特定の文字を記載することで、値をプログラム側に認識させる方法。

1.ソース(variable.py)

from flask import Flask
from markupsafe import escape
app = Flask(__name__)

#文字列 
@app.route('/str/<str>')
def string(str):
    return 'Hello, ' + escape(str)

#数値
@app.route('/intVal/<int:intVal>')
def intVal(intVal):
    return 'Hello, %d' % intVal

#実数 
@app.route('/floatVal/<float:floatVal>')
def floatVal(floatVal):
    return 'Hello, %f' % floatVal

#パス
@app.route('/path/<path:subpath>')
def path(subpath):
    return 'Subpath %s' % escape(subpath)

#uuid
@app.route('/uuid/<uuid>')
def uuid(uuid):
    return 'uuid %s' % escape(uuid)

2.結果

実行方法は同じなので結果だけ。
http://IPアドレス/str/123
「Hello, 123」
http://IPアドレス/intVal/777
「Hello, 777」
http://IPアドレス/floatVal/777.7
「Hello, 777.700000」
http://IPアドレス/path/1234/567/78
「Subpath 1234/567/78」
http://IPアドレス/uuid/aadab881-daff-4188-9364-ca99e598e224
「uuid aadab881-daff-4188-9364-ca99e598e224」

まとめ

値の受け渡しはページ遷移とかに応用できそう。
uuidとかも特定のユーザの操作の識別とかに使えそう。