8
8

More than 1 year has passed since last update.

FlaskによるGET/POST通信(ついでにCORS対応についても)

Last updated at Posted at 2020-01-10

概要

 FlaskにおけるPOST通信の内容が曖昧だったので、GET/POST通信どちらもここにまとめる。
 内容としては、「フォームによる通信」/「Json形式による通信」が存在する。「Flask POST」的に検索すると情報がごちゃごちゃで出てくる。ちなみにPython 3.7です。

GET通信

from flask import Flask, request, jsonfy
app = Flask(__name__)

@app.route("/", methods=["GET"])
def test():
    data = request.args.get('hoge', '') # ?hoge=valueの値を取得
    return data # サンプルのためそのまま返す

POST通信

Json形式による通信

from flask import Flask, request, jsonfy
import json
app = Flask(__name__)

@app.route("/", methods=["POST"])
def test():
    if not request.is_json:
        return jsonify({"error": "Missing JSON in request"}), 400

    data = request.json # request.dataをutf-8にデコードしてjsonライブラリにてディクショナリ型とする
    return jsonfy(data) # サンプルのためそのまま返す

フォームによる通信

from flask import Flask, request, jsonfy
app = Flask(__name__)

@app.route("/", methods=["POST"])
def test():
    data = request.form["hoge"] # フォームに存在する「"hoge"」キーの値を取得
    return jsonfy(data) # サンプルのためそのまま返す

CORS(Cross-Origin Resource Sharing)対応について

今回の内容では特に関係ないですが、次いでにCORS対応について説明します。
 私はWeb系エンジニアではなので、詳しいことは分からないんですが、簡単に言うと別のサーバリソースを使用する際ためのルールとかって話らしいです(もう少し突っ込んで説明すると、URLのベースが同じか同じかどうかって感じですかね)。

ひとまずpipにて「flask-cors」をインストールする。

pip install flask-cors

あとは以下のような感じで。

from flask import Flask
from flask_cors import CORS # これと
app = Flask(__name__)
CORS(
    app,
    supports_credentials=True
) #これ

参考

8
8
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
8
8