はじめに
私は、時々Flaskを使うのですが、使い方をよく忘れてしまうので、ここにメモをしておきます。
レスポンスを受け取るまで
インストール
まず、Flaskをインストールします。以下のコマンドを打ち込むだけで良いです。
$ pip install Flask
ファイル
次に適当にサーバの動作を行うファイルを作ります。以下に示すのは、必要最低限の動作を行うものです。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "hello"
if __name__ == "__main__":
app.run(debug=True)
サーバの稼働
そして次のコマンドをこのファイルが存在するディレクトリ上で打ち込みます。
$ python app.py
これでhttp://localhost:5000
にアクセスするとhelloと帰ってくるようになりました。
基本の関数の使い方
@app.route(URL, methods)
これはその後に来る関数をリクエストが来た際に走らせるようにするラッパーです。リクエストを受け取る場合は必ず使います。引数はそれぞれ、
URL: リクエストを受け取るURLのroute
methods: リクエストのメソッド
使い方としては以下のようなものがあります。また、URLから直接変数を得る方法などもあります。
基本的な使い方
# http://localhost:5000/hogeにGETリクエストを送ることで動く
@app.route("/hoge", methods=["GET"])
def hoge():
# ここで処理が行われる
URLから変数を取得する
FlaskではURLの文字列をデータとして取り込むことができます。例えば以下の例では、http://localhost:5000/hoge/fuga
に対してGETメソッドを送ると、「hello! fuga」と返ってきます。
@app.route("/hoge/<text>", methods=["GET"])
def hello(text):
return "hello! " + text
app.run(host, path, debug)
ここではアプリの稼働を行います。それぞれの引数は、
host: アプリを稼働するipアドレス、デフォルトはlocalhost
port: アプリにアクセスできるポート、デフォルトは5000
debug: Trueの時はアプリ稼働時にデバッグ出力を行う
これらを使って、変更を加えるとしたら、以下のような感じになります。
app.run(host="0.0.0.0", port=8080, debug=True)
hostを上のように設定しておくことで、外部のデバイスからでもこのコードを走らせているPCのアドレスが分かれば、アクセスできるようになります。
jsonの取り扱い
リクエストで受け取る方法
リクエストでjsonを受け取る時には、jsonモジュールを使用します。
from flask import Flask
import json
@app.route("/", methods=["POST"])
def hoge():
req_data = json.loads(request.data)
return req_data["hoge"]
json.loads関数を用いることで、jsonのデータを配列や辞書などのpythonで扱える形に変換しています。
レスポンスで出力する方法
レスポンスにjsonを含める場合には、Flaskのjsonify関数を使用します。
from flask import Flask, jsonify
@app.route("/", methods=["GET"])
def hoge():
res_data = {"json_data": "hogehoge"}
return jsonify(res_data)
基本的にはデータをjsonifyで包んで送るだけです。
最後に
何か間違いや、足りない部分などがあれば教えていただけるとありがたいです。また、質問なども受け付けます。