22
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

flask.request 自分用チートシート

Posted at

この記事は?

通常、Flask において受け取ったデータの取得にはrequestを用います。
公式ドキュメントを見ても良いのですが、メソッドが多くて目的のものがすんなり見つからないことも多々。
そこで、自分が主に使用するメソッドをメモ。

公式ドキュメントはこちら。
API — Flask Documentation (1.1.x)

動作確認方法

flask-app.py
from flask import Flask, request

app = Flask(__name__)
@app.route("/", methods=["POST"])
def rt_recv():
  request.<any_method> # 本記事ではこの行のみ記述
  return ""

app.run(host="0.0.0.0", port=8080, debug=True)
http-post.sh
#!/bin/sh

curl "http://localhost:8080" \
     -H "Content-Type: text/plain" \
     -d "<body>"

HTTP リクエストを送る方法は自由ですが、curlコマンドが手軽ではないかなと思います。

ヘッダ

全ヘッダを表示/取得

# 単に表示させる
print(request.headers)

# 辞書型で取得する
dict(request.headers)

特定のヘッダを取得

# get メソッドで取得
request.headers.get("<Key>")

# 辞書型的に書いてのヘッダ取得も可能
request.headers["<Key>"]
## ただし get() とは違い、存在しないキーの場合エラーとなる

get()メソッドを用いた場合、指定したキーのヘッダが存在しない場合は None オブジェクトが返されます。
一方、辞書型の記述での取得の場合、存在しないキーを指定するとキーエラーとなります。

ボディ

ボディを単に文字列として取得

request.get_data()

単にstring型としてボディを取得します。

JSON 形式の取得 (全てを辞書型で取得)

# いずれでも可
request.get_json()
request.json

Content-Typeヘッダがapplication/json以外であった場合、None オブジェクトが返されます。

Form 形式の取得

全てを辞書型で取得

# いずれでも可
request.form.to_dict()
dict(request.form)

Content-Typeヘッダがapplication/x-www-form-urlencoded以外であった場合、空の辞書型オブジェクトが返されます。

特定のキーを取得

# get メソッドで取得
request.form.get("<Key>")

# 辞書型的に書いてのヘッダ取得も可能
request.form["<Key>"]
## ただし get() とは違い、存在しないキーの場合エラーとなる

(headersと同様。)

URL パラメータの取得

全てを辞書型で取得

# いずれでも可
request.args.to_dict()
dict(request.args)

(formとほぼ同様。URL パラメータは、リクエストヘッダとかは関係無し。)

特定のキーを取得

# get メソッドで取得
request.args.get("<Key>")

# 辞書型的に書いてのヘッダ取得も可能
request.args["<Key>"]
## ただし get() とは違い、存在しないキーの場合エラーとなる

(headersと同様。)

22
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?