Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
生徒
「APIって難しそうだけど、Flask‑RESTfulで簡単に作れるって本当ですか?」
先生
「そうです!Flask‑RESTful(フラスク・レストフル)は、PythonのFlask(フラスク)に追加する拡張機能(エクステンション)で、REST API(レストエーピーアイ)をシンプルに作れますよ。」
生徒
「具体的にどう始めればいいですか?」
先生
「導入からエンドポイント作成まで、順を追ってやさしく説明しますね!」
1. REST APIって何?
REST APIとは、Webアプリやスマホアプリがサーバーと情報をやり取りするための決まりごとのようなものです。たとえば「天気を知りたい」「ユーザー一覧を取得したい」といった要求に対して、サーバーがデータを返す仕組みを提供します。
REST APIでは、データ操作の目的に応じてHTTPメソッドという分類を使います。GETは「読む」、POSTは「新しく保存する」、PUTは「更新する」、DELETEは「削除する」というイメージで、動作が直感的に理解しやすいのが特徴です。
初心者の方はまず「サーバーにお願いごとを送ると、その結果が返ってくる仕組み」と捉えると理解しやすくなります。次の簡単な例を見ると、APIのイメージがよりつかみやすくなります。
# これはAPIが返してくれるデータのイメージ例です
# 実際にWebブラウザで見るとこのようなJSON形式で返ってきます
{
"weather": "sunny",
"temperature": 25
}
このように、REST APIは「特定のURLにアクセスすると、決まった形式のデータが返ってくる」という、とてもシンプルで扱いやすい仕組みです。Flask-RESTfulを使うことで、この仕組みを初心者でも簡単に作れるようになります。
2. Flask-RESTfulのインストール方法
REST APIを作り始める前に、まずは開発環境を整えましょう。ここでは、FlaskとFlask-RESTfulをインストールするまでの流れを、プログラミング初心者の方にもわかりやすいように順番に説明します。どれも短いコマンドなので、「コピペして実行してみる」くらいの気持ちで大丈夫です。
インストール作業は、Windowsなら「コマンドプロンプト」や「PowerShell」、MacやLinuxなら「ターミナル」と呼ばれる黒い画面で行います。まずは次のコマンドを実行して、必要なライブラリをまとめて入れます。
pip install flask flask-restful
pip(ピップ)は、Python用の「アプリストア」のようなもので、FlaskやFlask-RESTfulといった外部ライブラリをインストールするときに使います。コマンドが正常に終われば、REST APIを作るための準備はほぼ完了です。
きちんとインストールできたか不安なときは、次のような簡単なテスト用スクリプトを作って確認してみましょう。
# check_install.py というファイル名で保存してみましょう
from flask import Flask
from flask_restful import Api
app = Flask(__name__)
api = Api(app)
print("Flask と Flask-RESTful のインポートに成功しました!")
このファイルを保存したあと、ターミナルでpython check_install.pyを実行して「インポートに成功しました!」と表示されればOKです。ここまでできれば、次のステップで実際にFlask-RESTfulを使ったREST APIのコードを書いていく準備が整いました。
3. プロジェクト構成を作ってみよう
Flask-RESTfulでREST APIを作るときは、最初に「どんなファイルを用意するか」を決めておくと、後からとても作業しやすくなります。ここでは、最小限のシンプルなプロジェクト構成を作りながら、各ファイルの役割を確認していきましょう。
まずは作業用のフォルダを1つ用意します。名前はflask_rest_apiなど、あとから見て内容が思い出せるものなら何でもかまいません。その中に、次の2つのファイルを作成します。
app.py:Flaskアプリ本体のコードを書くファイルrequirements.txt:このプロジェクトで使うライブラリ名を一覧にしたファイル
フォルダ構成を図にすると、次のようなイメージになります。
flask_rest_api/
├── app.py
└── requirements.txt
requirements.txtには、REST API開発で利用するライブラリ名を1行ずつ書いておきます。今回はFlaskとFlask-RESTfulを使うので、次のように記述します。
flask
flask-restful
このファイルを作っておくと、あとから別のパソコンで開発するときや、チームメンバーが同じ環境を用意したいときに、次の1行を実行するだけで必要なライブラリをまとめてインストールできます。
pip install -r requirements.txt
プログラミング未経験の方は、まずは「app.pyはプログラムを書く場所」「requirements.txtは必要な道具一覧」と覚えておけば十分です。このあと、app.pyの中に実際のFlask-RESTfulのコードを書いて、REST APIとして動かしていきます。
4. 最初のREST APIを作成しよう
準備ができたら、いよいよREST APIの“入口”となるコードを書いていきます。ここで作るのは、最も基本的でシンプルな「Hello, World!」を返すAPIです。プログラミング未経験の方でも理解できるよう、どの部分が何をしているのかを丁寧に説明しながら進めます。
APIとは「特定のURLにアクセスすると、決まった情報を返す仕組み」です。Flask-RESTfulでは、クラスを使ってこの“返してほしい情報”を定義します。では実際にapp.pyを作り、以下のコードを書いてみましょう。
from flask import Flask
from flask_restful import Api, Resource
# Flaskアプリを準備
app = Flask(__name__)
api = Api(app)
# Hello という名前のAPI(リソース)を作成
class Hello(Resource):
# GETメソッドで呼び出されたときに返す内容
def get(self):
return {"message": "Hello, World!"}
# / というパスに Hello API を割り当てる
api.add_resource(Hello, "/")
# アプリを起動
if __name__ == "__main__":
app.run(debug=True)
このAPIは、ブラウザで http://localhost:5000/ にアクセスすると、{"message": "Hello, World!"} というJSONデータを返します。「Webページ」ではなく「データ」が返ってくる点が、REST APIの大きな特徴です。
コードの流れとしては、①Flaskアプリを作り、②APIとして扱うクラス(Hello)を定義し、③そのクラスをURLに紐づける、という3段階。とてもシンプルですが、REST APIの基本がしっかり詰まっています。まずはこの仕組みに慣れることが重要です。
プログラムが正しく動くと、ターミナルに「* Running on http://127.0.0.1:5000/」と表示されます。アクセスして“Hello, World!”が見えたら、REST APIの第一歩は成功です。
5. JSONってなに?初心者向けに解説
JSON(ジェイソン)とは、Webサービスやアプリがデータをやり取りするときに広く使われている、とてもシンプルで読みやすいデータ形式です。人間が見ても理解しやすく、コンピュータにとっても扱いやすいという特徴があります。
基本的には「キー(名前)」と「値」をセットで書き、{ }の中にまとめます。例えばユーザーの名前や年齢を送るときは、次のように表現します。
{
"name": "Taro",
"age": 20,
"likes": ["music", "movie"]
}
このように、文字だけでなく数字・リスト(配列)なども扱えるため、アプリが必要とする情報をひとまとまりの形で送受信できます。特別な知識がなくても内容を目で見て理解しやすいことから、REST APIのデータ形式としてほとんどのサービスで採用されています。
ブラウザでAPIを呼び出したときに表示されるのもこのJSONデータです。「ページではなくデータが返ってくる」というREST APIの特徴を理解するためにも、まずはこのJSONの見た目に慣れておくと後の学習がスムーズになります。
6. 他のHTTPメソッドに対応させる方法
REST APIでは、単にデータを「取得」するだけでなく、「送信(保存)」「更新」「削除」といった操作が必要になる場面も多くあります。Flask-RESTfulでは、これらをそれぞれのHTTPメソッドとしてクラス内に追加するだけで簡単に実現できます。特にPOSTやPUTは初心者がつまずきやすい部分ですが、仕組みはとてもシンプルです。
次の例では、HelloというリソースにGETとPOSTの2つのメソッドを定義しています。GETはページを開いたときのデータ取得、POSTはユーザーが何か情報を送ったときに使われる動作とイメージすると理解しやすいでしょう。
from flask_restful import Resource
class Hello(Resource):
# 情報を取得したいとき(ブラウザでURLを開いたとき)
def get(self):
return {"message": "Hello, World!"}
# クライアント側からデータを送りたいとき(POSTリクエスト)
def post(self):
return {"message": "POSTでデータを受け取りました!"}
このように、メソッド名とHTTPメソッドがそのまま紐づくため、直感的に扱えます。たとえばフォーム送信やボタン操作でデータをサーバーへ送るときはPOSTが使われ、より実践的なREST API開発の第一歩になります。
7. 複数エンドポイントを追加するには?
たとえば/userという新しいURLに対応させるときは:
class User(Resource):
def get(self):
return {"user": {"name": "山田", "age": 30}}
api.add_resource(User, "/user")
こうすることで、/userにアクセスするとユーザー情報を返すAPIができます。
8. エラー処理の方法
例えば、存在しないリソースにアクセスされたとき、404という「ページが見つかりません」エラーを返す処理を入れたい場合は:
from flask_restful import abort
class User(Resource):
def get(self, user_id):
users = {1: "山田", 2: "鈴木"}
if user_id not in users:
abort(404, message="ユーザーが見つかりません")
return {"user": users[user_id]}
api.add_resource(User, "/user/<int:user_id>")
これで、存在しないuser_idにアクセスすると、エラー表示がJSON形式で返ります。
9. デバッグモードで開発効率アップ
最後にapp.run(debug=True)で起動すれば、
エラー内容が画面に詳しく表示され、初心者でもどこが間違っているか見つけやすくなります。
まとめ
ここまでFlask-RESTfulを使ったREST API構築の基本を一通り学んできました。最初の導入からエンドポイントの作り方、HTTPメソッドの扱い、さらにJSON形式の理解や複数ルートの追加方法まで、初めての方でも流れがつかみやすい形で整理できたと思います。実際のWebサービスでは、データの取得や更新を行うために多くの場面でREST APIが使われており、今回の内容はその基礎として非常に役立つ重要な知識です。また、エラー処理として404を返す仕組みやデバッグモードの使い方など、開発中に「つまずきやすい場所」を事前に理解しておくことで、今後の開発効率が大きく変わります。Flask-RESTfulは軽量で扱いやすいため、小さなAPIから徐々に大きなサービスへと発展させていく際にも柔軟に応えてくれます。 さらに、複数エンドポイントの追加方法では実際にユーザー情報を返す例を示しましたが、これを応用することで商品情報や投稿データなど、さまざまなWebアプリの処理をAPI化できます。PythonとFlaskのシンプルさを活かしながら、明確なルールで整理されたREST APIを構築することで、後からコードを読む人にもわかりやすく、メンテナンス性の高いアプリケーションが作りやすくなります。初心者のうちにこうした基本を丁寧に理解しておくことが、後々大きな力になります。 また、HTTPメソッドの使い分けやJSON形式の理解などはAPIを扱う上で必ず身につける必要があり、今回のサンプルコードを実際に動かしながら体験すると、より深く理解できます。特にフロントエンドやモバイルアプリとの連携を考える場面では、このREST APIの仕組みが中心となるため、学んでおいて損はありません。小さな一歩に見えても、着実に使えるスキルとして積み重なっていくものです。
サンプルコード(まとめ版)
ここでは、今回学んだ要素をひとつにまとめた簡易API例を掲載します。
from flask import Flask, request
from flask_restful import Api, Resource, abort
app = Flask(__name__)
api = Api(app)
users = {
1: {"name": "山田", "age": 30},
2: {"name": "鈴木", "age": 25}
}
class User(Resource):
def get(self, user_id):
if user_id not in users:
abort(404, message="ユーザーが見つかりません")
return {"user": users[user_id]}
def post(self, user_id):
data = request.get_json()
users[user_id] = data
return {"message": "追加しました", "user": data}
api.add_resource(User, "/user/<int:user_id>")
if __name__ == "__main__":
app.run(debug=True)
このサンプルではGETとPOSTの両方を扱い、404エラーの処理も含めています。実際のAPI開発に近い形になっているため、学習の仕上げとして使ってみてください。
生徒
「最初はAPIってすごく複雑なものだと思っていたけれど、Flask-RESTfulを使うと意外とシンプルに作れるんですね。」
先生
「そうなんです。Flask-RESTfulは必要な機能がコンパクトにまとまっているので、初めてREST APIを作る人にも向いていますよ。」
生徒
「特に404のエラー処理や複数エンドポイントの追加がとてもわかりやすかったです。自分でも簡単なアプリを作れそうです!」
先生
「ぜひ試してみてください。APIの基本を理解できれば、フロントエンドやモバイルアプリとの連携もスムーズになりますよ。」
生徒
「はい!まずは今回のサンプルコードを元に、いくつかエンドポイントを追加してみます!」
先生
「いいですね。小さな積み重ねが大きな成長につながりますよ。」