PythonでREST APIを作る方法!初心者向けFastAPI入門|Python API開発の基本
生徒
「PythonでWebサービスみたいなAPIを作れるって聞いたんですが、本当に初心者でもできますか?」
先生
「はい、できます。PythonにはFastAPIというとても便利なフレームワークがあり、簡単にREST APIを作ることができます。」
生徒
「REST APIってそもそも何なんですか?聞いたことはあるんですが、よくわかりません。」
先生
「REST APIとは、インターネットを通じてプログラム同士がデータをやり取りする仕組みです。例えばスマートフォンの天気アプリは、天気情報のAPIにアクセスして天気データを取得しています。」
生徒
「なるほど!Pythonでもそういう仕組みが作れるんですね!」
先生
「そうです。それではPythonのFastAPIを使ってREST APIを作る基本を順番に見ていきましょう。」
1. FastAPIとは?PythonでREST APIを作るためのフレームワーク
FastAPIとは、PythonでREST APIを簡単に作ることができるWebフレームワークです。 フレームワークとは、プログラムを効率よく作るための便利な仕組みがまとめられたソフトウェアのことです。
PythonのAPI開発では、FlaskやDjangoなども有名ですが、FastAPIは次の特徴があるため初心者にも人気があります。
- 高速に動作するPython Webフレームワーク
- コードがシンプルで初心者でも理解しやすい
- 自動でAPIドキュメントを作ってくれる
REST APIとは、Webの仕組みを使ってデータをやり取りするAPIの形式です。 例えば、ブラウザでURLにアクセスすると情報が取得できるような仕組みです。
つまりFastAPIを使うと、PythonでWeb API・REST API・バックエンドAPIなどを簡単に作ることができます。
2. FastAPIのインストール方法(Python環境の準備)
まずはPythonでFastAPIを使えるようにするためにインストールを行います。 Pythonがインストールされている環境で、コマンドプロンプトまたはターミナルを開いて次のコマンドを実行します。
pip install fastapi uvicorn
ここで出てきた用語も簡単に説明します。
- pip:Pythonのライブラリをインストールするツール
- FastAPI:PythonのREST APIフレームワーク
- uvicorn:FastAPIを動かすためのサーバー
サーバーとは、インターネット上でデータを提供するコンピュータやソフトのことです。 今回は自分のパソコンを小さなWebサーバーとして動かします。
3. 最初のFastAPIプログラムを作ってみよう
それではPythonで最もシンプルなFastAPIのREST APIを作ってみましょう。
まずは「main.py」というファイルを作成し、次のコードを書きます。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello FastAPI"}
このコードはとてもシンプルですが、すでにREST APIとして動作します。
@app.get("/")という部分は、ブラウザでURLにアクセスしたときに実行される処理を指定しています。
つまり、このAPIにアクセスすると「Hello FastAPI」というデータが返されます。
4. FastAPIサーバーを起動する方法
作成したFastAPIのプログラムを実際に動かしてみましょう。
次のコマンドを実行します。
uvicorn main:app --reload
このコマンドの意味を簡単に説明します。
- main:Pythonファイル名
- app:FastAPIアプリの名前
- --reload:コード変更時に自動再起動
サーバーが起動したらブラウザで次のURLを開きます。
http://127.0.0.1:8000
すると次のようなJSONデータが表示されます。
{"message":"Hello FastAPI"}
これがPythonで作った最初のREST APIです。
5. URLに応じてデータを返すAPIを作る
REST APIではURLによって処理を変えることがよくあります。 例えばユーザーIDなどを指定してデータを取得するAPIです。
FastAPIでは次のように書くことでURLの値を取得できます。
from fastapi import FastAPI
app = FastAPI()
@app.get("/user/{user_id}")
def read_user(user_id: int):
return {"user_id": user_id}
例えば次のURLにアクセスします。
http://127.0.0.1:8000/user/10
すると次のデータが返ってきます。
{"user_id":10}
このようにURLの数字を使って、データベース検索などを行うAPIを作ることができます。
6. データを受け取るPOST APIの作り方
REST APIではデータを取得するだけでなく、新しいデータを送信することもあります。 このときによく使われるのがPOSTリクエストです。
FastAPIでは次のように書くことでPOST APIを作ることができます。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: int
@app.post("/items/")
def create_item(item: Item):
return {"name": item.name, "price": item.price}
ここで登場したBaseModelは、APIで受け取るデータの形を定義するための仕組みです。
例えば「商品名」と「価格」を送信するAPIなどを簡単に作ることができます。
7. FastAPIの自動ドキュメント機能
FastAPIの大きな特徴の一つが自動APIドキュメントです。
サーバーを起動した状態で次のURLを開いてみてください。
http://127.0.0.1:8000/docs
するとSwagger UIという画面が表示され、作成したAPIの一覧を見ることができます。
さらにその画面からAPIを実際にテストすることもできます。
通常のAPI開発ではドキュメントを別に作る必要がありますが、FastAPIでは自動生成されるため開発効率が非常に高いです。
このようにFastAPIはPython API開発、Web API開発、REST API開発、バックエンド開発などで多くの開発者に利用されています。
まとめ
ここまで、Pythonを使ったREST API開発の基本として、FastAPIを利用したAPIの作り方を順番に学びました。FastAPIはPythonでWeb APIを作るための人気の高いフレームワークであり、シンプルなコードでREST APIやバックエンドAPIを構築できる点が大きな特徴です。
まず最初に理解しておきたいのは、REST APIとはインターネットを通じてプログラム同士がデータをやり取りするための仕組みであるということです。Webサービスやスマートフォンアプリ、クラウドサービスなどの多くは、このREST APIという仕組みを使って情報を取得したり送信したりしています。
Pythonはデータ処理やAI開発で有名なプログラミング言語ですが、FastAPIのようなフレームワークを使うことで、Webアプリケーション開発やAPIサーバー開発にも活用することができます。特にFastAPIはコードの書き方がとても分かりやすく、Python初心者でも比較的短いコードでREST APIを作れるため、Python Web開発の入門としてもとても適しています。
今回の記事では、まずFastAPIの基本的な特徴として「高速に動作する」「コードがシンプル」「自動ドキュメント機能がある」というポイントを確認しました。これらの特徴によって、Pythonを使ったAPI開発の効率が大きく向上します。
次に、Python環境でFastAPIを使うための準備として、pipコマンドを使ったインストール方法を紹介しました。FastAPIを利用する場合は、FastAPI本体とAPIサーバーとして動作するuvicornを一緒にインストールすることで、簡単にローカル環境でAPIサーバーを起動することができます。
pip install fastapi uvicorn
このコマンドを実行することで、Pythonのパッケージ管理ツールであるpipがFastAPIとuvicornをダウンロードし、Python環境にインストールしてくれます。Pythonのライブラリ管理はWeb開発やAPI開発においてとても重要な知識なので、初心者の方はぜひ覚えておきましょう。
FastAPIで最初のREST APIを作る流れ
FastAPIでREST APIを作る基本的な流れはとてもシンプルです。まずPythonファイルを作成し、FastAPIクラスを読み込み、APIのエンドポイントを定義します。エンドポイントとは、URLにアクセスしたときに実行される処理のことです。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello FastAPI"}
このコードでは、ブラウザからトップページのURLにアクセスすると「Hello FastAPI」というJSONデータを返すAPIを作っています。たった数行のコードでREST APIが作れるのは、FastAPIの大きな魅力です。
APIを実際に動かすためには、uvicornを使ってサーバーを起動します。uvicornはPythonで動作するASGIサーバーで、FastAPIアプリケーションをWebサーバーとして公開する役割を持っています。
uvicorn main:app --reload
このコマンドを実行すると、ローカル環境でAPIサーバーが起動し、ブラウザからアクセスできるようになります。開発中は「--reload」オプションを付けることで、Pythonコードを変更したときに自動的にサーバーが再起動するため、開発効率が非常に高くなります。
URLパラメータを使ったAPIの作り方
REST APIではURLの一部をパラメータとして利用することがよくあります。例えばユーザーIDや商品IDを指定してデータを取得するようなAPIです。FastAPIではURLパスに変数を定義することで簡単にパラメータを取得できます。
from fastapi import FastAPI
app = FastAPI()
@app.get("/user/{user_id}")
def read_user(user_id: int):
return {"user_id": user_id}
このように書くことで、URLに含まれる数字を取得してAPI処理に利用することができます。例えばユーザー情報を取得するAPIや商品情報を取得するAPIなど、さまざまなWebサービスのバックエンドでこの仕組みが利用されています。
POSTリクエストを使ったデータ送信API
REST APIではデータを取得するGETリクエストだけでなく、新しいデータを登録するPOSTリクエストも重要です。FastAPIではPydanticのBaseModelを使うことで、受け取るデータの形式を簡単に定義することができます。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: int
@app.post("/items/")
def create_item(item: Item):
return {"name": item.name, "price": item.price}
このプログラムでは、商品名と価格を受け取るAPIを作っています。Webアプリケーションでは、ユーザー登録、商品登録、コメント投稿など、さまざまな場面でPOST APIが利用されます。
FastAPIの自動ドキュメント機能
FastAPIの便利な機能として、自動でAPIドキュメントを作成してくれる仕組みがあります。サーバーを起動した状態で「/docs」にアクセスすると、Swagger UIという画面が表示されます。この画面では作成したAPIの一覧を確認できるだけでなく、実際にAPIリクエストを送信してテストすることもできます。
API開発ではドキュメント管理がとても重要ですが、FastAPIではコードから自動生成されるため、開発者は余計な作業をする必要がありません。これはPython API開発やWebバックエンド開発において非常に大きなメリットといえます。
このようにFastAPIは、Pythonを使ったWeb API開発、REST API開発、バックエンドシステム構築、マイクロサービス開発など、さまざまな場面で活用されています。初心者の方でも基本を理解すれば、自分のWebサービスやAPIサーバーを作ることができるようになります。
生徒
「今回の記事で、PythonでもWebサービスの裏側で使われているREST APIが作れることがよく分かりました。FastAPIはコードがとてもシンプルで驚きました。」
先生
「そうですね。FastAPIはPythonのWebフレームワークの中でも特にシンプルで高速なAPI開発ができるのが特徴です。初心者がPythonでAPI開発を学ぶにはとても良い環境です。」
生徒
「GETリクエストでデータを取得したり、POSTリクエストでデータを送信したりする仕組みも理解できました。URLにユーザーIDを入れてデータを取得するAPIもよく分かりました。」
先生
「それは良い理解ですね。REST APIではURLパラメータやJSONデータを使って情報をやり取りします。FastAPIはその仕組みをとても簡単に書けるように設計されています。」
生徒
「それからSwaggerのAPIドキュメントも便利ですね。自動でAPI一覧が表示されるので、開発やテストがとてもやりやすそうです。」
先生
「その通りです。FastAPIはドキュメント生成、データ検証、型チェックなどの機能が最初から用意されています。そのためPythonを使ったWeb API開発やバックエンド開発の効率がとても高くなります。」
生徒
「これからはデータベースと連携したAPIや、実際のWebサービスのバックエンドにも挑戦してみたいです。」
先生
「とても良い目標ですね。FastAPIを使えば、ユーザー管理API、商品管理API、ログインAPIなど、本格的なWebアプリケーションのバックエンドも作れるようになります。ぜひ今回の基本をベースにして、PythonによるAPI開発をさらに学んでいきましょう。」