【Flask】簡単なAPIを実装

2021.08.14
2024.03.24
Web
APIflaskPyth

はじめに

Flaskを使って簡単なAPIを実装したいと思います。

フォーム、JSON、クエリストリングから値の取得方法についても紹介していきます。

Flaskとは

Flaskとは、Python製の軽量なWebアプリケーションフレームワークです。

簡単な使い方については、以下の記事で解説しています。

いまさらFlask超入門

いまさらFlask超入門

はじめに Flaskについて、これから使い始める人向けに超簡単なアプリを作成して、実行してみるま

簡単なAPIの実装

リクエストメソッドはmethodsで指定します。デフォルトはGETとなっています。

routeで指定したURLとメソッドでAPIが実行できます。

レスポンスは辞書型で指定するとjsonで返します。

1from flask import Flask
2
3app = Flask(__name__)
4
5# URLとメソッドの指定
6@app.route("/articles", methods=["GET"])
7def get_articles():
8    title = "Qiita Title"
9    url = "https://qiita.com/"
10
11    # JSON形式でレスポンス
12    return {
13        "title": title,
14        "url": url,
15    }

辞書型でなくともjsonifyを使うとJSON形式にしてくれます。

1from flask import Flask, jsonify
2
3app = Flask(__name__)
4
5@app.route("/articles", methods=["GET"])
6def get_articles():
7    return jsonify(
8      title = "Qiita Title"
9      url = "https://qiita.com/"
10    )

実行してからPostmanでAPIを叩いてみます。

JSON形式でレスポンスが返ってきました。

リクエストデータの取得

クライアントから送られてきた情報はrequestというグローバルなオブジェクトに格納されています。このrequestを利用してクライアントから送られてきた情報を取得します。

ここでは下記3つの方法で送られてくるパラメータについて取得する方法を紹介します。

  • フォーム
  • ボディ(JSON形式)
  • クエリストリング

余談ですが、各メソッドでパラメータをどこに入れるべきかは下記の記事が参考になりました。

そのリクエストパラメータ、クエリストリングに入れますか、それともボディに入れますか - Qiita

そのリクエストパラメータ、クエリストリングに入れますか、それともボディに入れますか - Qiita

今回は、何らかのパラメータを扱うAPIを設計する際に、どこにパラメータを含めるべきかという問題について。選択肢は3つあります。1. クエリストリングに含める2. リクエストボディに含める3.…

フォームから値の取得

PUTやPOSTなどで送信されるフォームデータはrequest.formでアクセスできます。

サンプルのコードはPOST的な動作はしていません。

1from flask import Flask, request
2
3app = Flask(__name__)
4
5@app.route("/articles_form", methods=["POST"])
6def get_articles_with_form():
7    title = request.form["title"]
8    url = request.form["url"]
9    return {
10        "title": title,
11        "url": url,
12    }

JSONから値の取得

JSON形式でパラメータが送られてきた場合はrequest.get_jsonを利用します。

request.jsonでもJSON形式にパースしてくれますが、Content-Typeがapplication/jsonである必要があります。

1from flask import Flask, request
2
3app = Flask(__name__)
4
5@app.route("/articles_json", methods=["POST"])
6def get_articles_with_json():
7    data = request.get_json()
8    title = data["title"]
9    url = data["url"]
10    return {
11        "title": title,
12        "url": url,
13    }

クエリストリングから値の取得

クエリストリングから値を取得するにはrequest.argsを利用します。

1from flask import Flask, request
2
3app = Flask(__name__)
4
5@app.route("/articles_args", methods=["GET"])
6def get_articles_with_args():
7    title = request.args.get("title")
8    url = request.args.get("url")
9    return {
10        "title": title,
11        "url": url,
12    }

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee