現在、APIは現代アプリにとって不可欠な一部分として、様々な領域で広く利用されています。業務拡大などの原因で、よく自分のAPIを作成する必要があります。本文では、Pythonで便利なAPIフレームワークを使って、簡単にAPIを作成したり、構築したりする方法を皆さんに紹介します。Pythonで自分のAPIを作成したい場合は、ぜひ本文の内容を参照してください。
PythonでのAPI構築:フレームワークが必要
PythonでAPIを作成したり、構築したりするために、Python APIフレームワークが必要があります。幸いなことに、Pythonは非常に人気のあるプログラミング言語ですので、利用可能なAPIフレームワークが非常に豊富です。例えば、Django、FastAPI、Flaskなどよく聞かれるAPIフレームワークもPythonのAPIフレームワークになります。
APIフレームワークについて
APIフレームワークは、Web APIを開発するためのツールセットやフレームワークです。これらのフレームワークは、開発者がAPIエンドポイントを定義し、リクエストを処理してレスポンスを生成するための機能を提供して、開発者が効率的に高品質なAPIを構築できるように支援します。
APIフレームワークは簡単に次のようなことを実現できるので、APIを便利に構築することができます。
ルーティング: リクエストが特定のエンドポイントに到達したときに、どのコードが実行されるかを決定する機能です。これにより、各APIエンドポイントに対するリクエストの処理が簡素化されます。
リクエストのパースとバリデーション: 受信したリクエストのパラメータを解析し、必要に応じてバリデーションを行います。これにより、不正な入力や不足しているパラメータなどのエラーを処理できます。
レスポンスの生成: リクエストに対する適切なレスポンスを生成する機能が提供されます。これには、データのシリアル化や適切なHTTPステータスコードの設定などが含まれます。
認証と認可: APIにアクセスするユーザーを認証し、アクセス権を制御する機能を提供します。これにより、セキュリティを強化し、アクセス制御を実装できます。
ドキュメント生成: APIのエンドポイントや使用方法を自動的にドキュメント化する機能があります。これにより、APIの利用方法を開発者に示すことができます。
PythonのFastAPIでAPIを新規作成
Pythonで利用可能なAPIフレームワークがたくさんありますが、その中で比較的に使いやすいのがFastAPIです。そこで、本文では、PythonでFastAPIを利用して、APIを作成する方法を皆さんに紹介します。
PythonのFastAPIとは?
FastAPIは、高性能なAPI開発を実現するためのPythonフレームワークで、StarletteとPydanticライブラリーに基づいています。REST API開発における新しいスタンダードとして、Pythonコミュニティで急速に注目を集めているフレームワークです。 機械学習プロジェクト等での利用に適している点が大きな特徴です。
公式サイト:https://fastapi.tiangolo.com/ja/
FastAPIは他のフレームワークに比べて、ルーティング、リクエスト、レスポンスなどの機能がよく構造化されているので、比較的にシンプルで直感的な設計が行えます。だから、初心者なら、FastAPIはこちらの一押しになるのです。
FastAPIを動かせる要件
FastAPIでAPIを作成したり、構築したりするために、様々な要件が必要があります。
Python 3.7+
FastAPIはPython 3.7以上が必要です。型ヒント機能等を利用するため、3.7以上のバージョンが推奨されます。
ASGIサーバー
FastAPIはASGI(Asynchronous Server Gateway Interface)に準拠したサーバー上で動作します。代表的なのはUvicornですが、Hypercorn等のASGIサーバーも利用できます。
pip install uvicorn
Pydantic
リクエストとレスポンスのデータ検証にPydanticライブラリが利用されます。FastAPIはPydanticに依存しているため、インストールが必要です。
pip install pydantic
Starlette
FastAPIはStarletteと呼ばれるWSGI/ASGIフレームワークの上に構築されています。直接は必要ありませんが、内部的にはStarletteに依存関係があります。
(オプション) SQLAlchemy, Keras, PyTorch等
機械学習や大規模なデータ処理を行う場合、これらのライブラリとの連携が可能です。アプリケーション次第で必要になる場合があります。
- SQLAlchemy (オプション)
pip install sqlalchemy
- Keras (オプション)
pip install keras
- PyTorch (オプション)
pip install torch
操作手順:Python FastAPIでAPIを構築する
それでは、上記のステップを参照して、FastAPIの動作要件を準備した上、次のステップを参照して、FastAPIでAPIを構築しましょう。
FastAPIのインストール
次のコマンドラインを使って、FastAPIをインストールすることができます:
pip install fastapi
そして、uvicornをインストールします。
FastAPIでAPI(アプリ)を作成
そして、Pythonファイルを新しく作成して、たとえば、demo.py。次のコードをそこにコピーします。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
上記のコードでは、appと名付けられたFastAPIの使用例を作成して、ルートルーディングを定義し、JSONフォーマットのレスポンスも定義しました。
FastAPIアプリを実装
次のようなコマンドでFastAPIアプリを実装することができます。
uvicorn main:app --reload
ここで、FastAPIはローカルでサーバーを立ち上げ、デフォルトポート(8,000)を監視できます。http://127.0.0.1:8000
をブラウザで開くと、 {"Hello": "World"}
のレスポンスを見ることができます。
より多くのルーディングと機能を追加
上記のコードに基づき、より多くのルーディングと機能を追加することができます。ここで自分のニーズに従って追加することができます。
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
**たとえば:**上記のコードに read_item
の新しいルーディングを追加し、 item_id
というパラメータと q
というオプションのプラメータを受けとり、JSON形式のレスポンスを返します。
サンプル:FastAPIの使用例
次は、FastAPIの実の使用例を皆さんに紹介します。次は、直接に実装可能なコードで、IDEエディターにコピーして実行してください。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": f"APIのid:{item_id}"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
そして、ブラウザで http://localhost:8000/
にアクセスすると、 {"Hello": "World"}
というレスポンスのコンテンツを見れるようになります。
また、 http://localhost:8000/items/42?q=somequery
のようなURLにアクセスして、パラメータ付きのレスポンスを確認することができます。
APIドキュメントの確認
また、FastAPIはSwaggerのドキュメントの自動生成をサポートしています。FastAPIが自動生成したAPIドキュメントを確認するには、http://localhost:8000/docs
にアクセスしてください。
ApidogでAPI設計、作成、テストをより簡単に
Apidogは、APIの設計、開発、テストなどのプロセスでも非常に有用なツールキットになります。Apidogを使用すると、非常に直感的なGUIでAPIを設計して、それに基づいてAPIドキュメントを生成したり、さまざまなAPIフレームワークの実装コードを生成したりすることができます。
また、ApidogでAPIを簡単にテストすることもできます。APIの単体テスト、結合テスト、機能テストやパフォーマンステストなどもApidogによって簡単に実現されることが可能です。APIサーバーサイドの開発ができていなくても、Apidogの内蔵のモックサーバーを使用して、テスト作業を前に進めることができるので、APIライフサイクルのどの段階において、非常に便利なツールです。
Python APIフレームワークの実装コードを生成
次の画像のように、Apidogで定義したAPIドキュメントのページで「コード生成」→「サーバースタブとクライアントSDKを生成」の順にクリックして、様々な言語での数百個のフレームワークのサーバーサイドの実装コードを生成することができます。
PythonのAPIフレームワークの実行コードを生成する場合は、左側のメニューから「Python」を選択して、対応するAPIフレームワークを選択すれば、簡単に生成することができます。
まとめ
PythonでAPIを構築する際には、FastAPIなどのAPIフレームワークを利用することで、ルーティング、リクエスト処理、レスポンス生成などの機能を簡単に実現できます。本記事ではFastAPIを使ったAPIの作成方法を解説しました。FastAPIはシンプルで直感的なAPI開発を可能にし、ドキュメントの自動生成などの特徴があります。開発効率や保守性を高めるためにも、APIフレームワークの活用が重要です。
また、APIの設計からテストまでをサポートするApidogというツールも紹介しました。GUIベースでのAPI定義や、様々な言語のサーバーサイドコード生成、テスト機能などを提供しているので、API開発をよりスムーズに進めることができます。
以上、PythonでのAPI開発において、FastAPIやApidogといったツールを活用することで、生産性と品質の向上を図ることができます。ぜひ参考にしてみてください。