Awesome FastAPI
FastAPIを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
サードパーティ拡張
管理画面
- FastAPI Admin - 機能的な管理パネルで、データに対してCRUD操作を行うためのユーザーインターフェースを提供します。現在はTortoise ORMのみに対応しています。
- FastAPI Amis Admin - 高性能で効率的かつ拡張性の高いFastAPI用の管理フレームワーク。
- Piccolo Admin - 強力で現代的な管理GUIを、Piccolo ORMを使用して提供します。
- SQLAlchemy Admin - FastAPI/StarletteとSQLAlchemyモデルを連携できる管理パネル。
- Starlette Admin - FastAPI/Starlette用の管理フレームドレームで、SQLAlchemy、SQLModel、MongoDB、ODManticをサポートしています。
認証
- AuthX - FastAPI向けのカスタマイズ可能な認証とOAuth2管理。
- FastAPI Auth - OAuth2 Password FlowをサポートするJWTアクセスおよびリフレッシュトークンを備えたプラグイン型認証。
- FastAPI Azure Auth - Azure ADによるAPI認証で、シングルおよびマルチテナントをサポート。
- FastAPI Casbin Auth - Casbinを用いてRBAC、ReBAC、ABACといったさまざまなアクセス制御モデルをサポートする認可機能。
- FastAPI Cloud Auth - FastAPIとクラウド認証サービス(AWS Cognito、Auth0、Firebase Authentication)の簡単な統合。
- FastAPI Login - アカウント管理および認証(Flask-Loginに基づく)
- FastAPI JWT Auth - JWT認証(Flask-JWT-Extendedに基づく)
- FastAPI Permissions - 行レベルの権限。
- FastAPI Security - FastAPIにおいて、認証と認可をデプロイとして実装。
- FastAPI Simple Security - パス操作で管理可能なAPIキーセキュリティを内蔵。
- FastAPI Users - アカウント管理、認証、認可。
- FastAPI Zitadel Auth - IAMプラットフォームを用いたOAuth2(Zitadelに基づく)
サイバーセキュリティ
- FastAPI Guard - リクエスト制限、IPの自動ブロック、パネル攻撃検知、国・IP・クラウドプロバイダーのホワイトリスト/ブラックリスト、ユーザーエージェントフィルタリング、地理位置情報、Redisによる永続化、その他機能。
- secure - FastAPIアプリでASGIミドルウェアと1つの設定オブジェクトを使用して、HTTPセキュリティヘッダーを一貫して定義および適用。
データベース
ORM
- Edgy ORM - 複雑なデータベースをシンプルに。
- FastAPI SQLAlchemy - FastAPIとSQLAlchemyのシンプルな統合
- Fastapi-SQLA - FastAPI用のSQLAlchemy拡張機能で、ページネーション、asyncio、pytestをサポート。
- FastAPIwee - PeeWeeモデルに基づくREST APIの簡単な作成方法
- FastSQLA - FastAPI用のAsync SQLAlchemy 2.0+拡張機能で、SQLModelをサポートし、内蔵ページネーションなども提供。
- GINO - Python asyncioに基づいた軽量な非同期ORM(SQLAlchemy coreをベースに構築)。
- ORM - 非同期のORM
- ormar - OrmarはPydanticによるバリデーションを用いた非同期ORMであり、FastAPIのリクエストとレスポンスに直接使用できるため、維持するモデルセットを1つにできる。Alembicのマイグレーションが含まれている。
- FastAPI Example - FastAPIとOrmarの組み合わせ
- Piccolo - PostgresおよびSQLiteをサポートする非同期のORMおよびクエリビルダー。バッテリー(マイグレーション、セキュリティなど)が備わっている。
- FastAPI Examples - FastAPIとPiccoloの組み合わせ
- Tortoise ORM - Djangoをインスピレーションとして作られた使いやすいasyncio ORM(オブジェクト関係マッパー)
- FastAPI Example - Tortoise-ORMとFastAPIの統合例
- Tutorial: Setting up Tortoise ORM with FastAPI
- Aerich - Tortoise ORMのマイグレーションツール
- Saffier ORM - あなたが一生使わなければならない唯一のPython ORM
- SQLModel - SQLModel(PydanticとSQLAlchemyをベースにしている)は、PythonコードからSQLデータベースとやり取りするためのライブラリであり、Pythonオブジェクトを使用する。
クエリビルダー
- asyncpgsa - asyncpgをSQLAlchemy Coreと使うためのラッパー
- データベース - SQLAlchemy Core表現言語に基づく非同期SQLクエリビルダー
- PyPika - SQLクエリビルダーがSQL言語の全機能を公開
ODM
- Beanie - MongoDB用の非同期Python ODM(MotorおよびPydanticに基づく)で、データおよびスキーマのマイグレーションを本番でサポート
- MongoEngine - MongoDBからPythonで操作するためのドキュメントオブジェクトマッパー(ORMに似ているが、ドキュメントデータベース用)
- Motor - MongoDB用の非同期Pythonドライバー
- ODMantic - AsyncIO MongoDB ODM(Pydanticと統合)
- PynamoDB - AmazonのDynamoDBへのPython的なインターフェース
その他のツール
- Pydantic-SQLAlchemy - SQLAlchemyのモデルを モデルに変換する Pydantic
- FastAPI-CamelCase - FastAPIで Pydantic を利用したCamelCase JSONのサポート
- CamelCase Models with FastAPI and Pydantic - データモデルとAPI表現の連携を支援するツールです。
依存性注入
- modern-di - IoCコンテナおよびスコープを備えたデプロイインジェクションフレームワーク(FastAPI integration)
- Wireup - FastAPIで依存性を注入し、実行時オーバヘッドゼロで、Web、CLIなど他のインターフェース間で依存性を共有
開発ツール
- FastAPI Code Generator - OpenAPIファイルからFastAPIアプリを作成し、スキーマ駆動開発を可能にする。
- FastAPI Client Generator - OpenAPI仕様から、mypyおよびIDEに親しみやすいAPIクライアントを生成する。
- FastAPI Cruddy Framework - FastAPIエコシステムにRuby on Rails、Ember.js、Sails.jsの開発生産性をもたらすために設計されたFastAPI用の補助ライブラリ。
- FastAPI MVC - 高品質なFastAPIプロダクション用APIを構築するための開発生産性ツール。
- FastAPI Profiler - joerick/pyinstrumentによるFastAPIミドルウェアで、サービスのパフォーマンスを確認する。
- FastAPI Versioning - APIバージョニング
- Jupyter Notebook REST API - JupyterノートブックをRESTフルAPIエンドポイントとして実行
- Manage FastAPI - FastAPIプロジェクトの生成と管理用CLIツール
- msgpack-asgi - FastAPIの生成・開発・計測を支援するツールです。 MessagePack
- python-cqrs - イベント駆動アーキテクチャフレームワーク(CQRS、トランザクションアウトボックス、サガオーケストレーション、FastAPI/FastStreamとのシームレス統合)
メール
- FastAPI Mail - FastAPIからのメール送信を支援する拡張です。
ユーティリティ
- Apitally - FastAPI用のAPI分析、監視、リクエストログ
- ASGI Correlation ID - リクエストIDログ中間層
- FastAPI Cache - シンプルで軽量のキャッシュシステム
- FastAPI Cache - FastAPIのレスポンスおよび関数結果をキャッシュするツール。Redis、Memcached、DynamoDB、メモリバックエンドをサポート。
- FastAPI Chameleon - FastAPIにChameleonテンプレート言語の統合を追加
- FastAPI CloudEvents - FastAPIとのCloudEvents統合
- FastAPI Contrib - 意見をもつユーティリティセット:ページネーション、認証中間層、権限、カスタム例外ハンドラ、MongoDBサポート、Opentracing中間層
- FastAPI FastCRUD - )- 高度な非同期CRUD操作と柔軟なエンドポイント作成ユーティリティ
- FastAPI Events - FastAPIおよびStarlette用の非同期イベントディスパッチ/ハンドリングライブラリ
- FastAPI FeatureFlags - FastAPI用のシンプルな機能フラグ実装
- FastAPI Injectable - CLIツール、バックグラウンドタスク、ワーカーなど、ルートハンドラ外でのFastAPIの依存性注入の使用
- FastAPI Jinja - FastAPIにJinjaテンプレート言語の統合を追加
- FastAPI Lazy - FastAPIでプロジェクトを開始するための遅延パッケージ
- FastAPI Limiter - FastAPI用のリクエストレート制限器
- FastAPI Listing - コンポーネントベースアーキテクチャを用いたリストAPI設計/構築ライブラリ。組み込みクエリページネーター、ソート、Django-Adminのようなフィルタなども備えている
- FastAPI MQTT - MQTTプロトコル用の拡張
- FastAPI Opentracing - FastAPI用のOpentracing中間層およびデータベーストレースサポート
- FastAPI Pagination - FastAPI用のページネーション機能
- FastAPI Plugins - Redisおよびスケジューラプラグイン
- FastAPI ServiceUtils - APIサービスを作成するジェネレーター
- FastAPI Shield - 任意の一般エンドポイントデコレーターを生成できる、ラグレ依存性注入を可能にする一般的なFastAPIライブラリ
- FastAPI SocketIO - FastAPIとSocketIOの簡単な統合
- FastAPI Utilities - 再利用可能なユーティリティ:クラスベースビュー、レスポンス推定ルーター、周期タスク、タイムミドルウェア、SQLAlchemyセッション、OpenAPI仕様の簡略化
- FastAPI Viewsets - FastAPI向けにDjango REST FrameworkをインスピレーションとしたViewSetsを提供し、クラスベースのCRUDエンドポイントの組織化と自動ルート登録を可能にする
- FastAPI Websocket Pub/Sub - ウェブ上およびクラウド間でリアルタイムでアクセスしやすく、スケーラブルに実現できる、伝統的なpub/subパターン
- FastAPI Websocket RPC - Websocketsを用いたRPC(両方向JSON RPC)を簡単に、堅牢に、プロダクション対応で実現
- OpenTelemetry FastAPI Instrumentation - ライブラリはFastAPIウェブフレームワークのHTTPリクエストの自動および手動インストルメンテーションを提供し、フレームワークを用いて実行されるアプリケーションのHTTPリクエストをインストルメンテーションする
- Prerender Python Starlette - Prerender用のStarletteミドルウェア
- Prometheus FastAPI Instrumentator - FastAPIアプリケーション向けに設定可能でモジュラリティのあるPrometheusインストルメンテーター
- SlowApi - レート制限器(Flask-Limiterに基づく)
- Starlette Context - プロジェクト内のどこでもリクエストデータを保存・アクセスできる、ログ記録に有用な機能
- Starlette Exporter - FastAPIおよびStarlette向けのもう一つのPrometheus統合
- Starlette OpenTracing - StarletteおよびFastAPI向けのOpenTracingサポート
- Starlette Prometheus - FastAPIおよびStarlette向けのPrometheus統合
- Strawberry GraphQL - データクラスに基づいたPython用GraphQLライブラリ
- Pydantic Resolve - resolveおよびpost-processハンドルを導入することで、Pydanticクラスを強力な可合成計算コンテナに変換
リソース
公式リソース
- Documentation - 包括的なドキュメンテーション
- Tutorial - 公式チュートリアルで、FastAPIの主な機能をステップバイステップでどのように使用するかを示す
- Source Code - GitHub上でホストされています。
- Discord - 他のFastAPIユーザーとチャットできます。
外部リソース
- TestDriven.io FastAPI - FastAPIの開発・テスト・運用を扱う外部資料です。
ポッドキャスト
- Build The Next Generation Of Python Web Applications With FastAPI - このエピソードのPodcast Initでは、FastAPIの開発者 Sebastián Ramirezが、FastAPIを構築した動機と内部仕組みについて語る
- FastAPI on PythonBytes - プロジェクトの良好な概要
記事
- FastAPI has Ruined Flask Forever for Me
- Why we switched from Flask to FastAPI for production machine learning - FastAPIの設計・採用事例を扱う記事です。
チュートリアル
- Async SQLAlchemy with FastAPI - SQLAlchemyを非同期で使用する方法を学びます。
- Deploy Machine Learning Models with Keras, FastAPI, Redis and Docker
- Developing and Testing an Asynchronous API with FastAPI and Pytest - FastAPI、Postgres、Pytest、Dockerを使ってテスト駆動開発(Test-Driven Development)で非同期APIを開発・テストします。
- FastAPI for Flask Users - Flaskとの並行コード比較でFastAPIを学びます。
- Implementing FastAPI Services – Abstraction and Separation of Concerns - より保守性の高いコードベース向けのFastAPIアプリケーションとサービス構造。
- Introducing FARM Stack - FastAPI, React, and MongoDB - 完全なFastAPIウェブアプリケーションスタックの導入方法を学びます。
- Multitenancy with FastAPI, SQLAlchemy and PostgreSQL - FastAPIアプリケーションがマルチテナント対応できるようにする方法を学びます。
- Real-time data streaming using FastAPI and WebSockets - FastAPIからリアルタイムチャートにデータをストリーミングする方法を学びます。
- Running FastAPI applications in production - Gunicornとsystemdを使って生産環境にデプロイします。
- Serving Machine Learning Models with FastAPI in Python - FastAPIを使って、Pythonで機械学習モデルをRESTフルAPIとして簡単にデプロイ・サーバーできます。
- Streaming video with FastAPI - 動画ストリームを提供する方法を学びます。
- Using Hypothesis and Schemathesis to Test FastAPI - FastAPIにプロパティベースのテストを適用します。
講演
- PyConBY 2020: Serve ML models easily with FastAPI - Sebastian Ramirezの講演から、FastAPIを使ってMLモデルのための生産用ウェブ(JSON)APIを簡単に構築する方法、およびデフォルトでベストプラクティスを適用する方法を学びます。
- PyCon UK 2019: FastAPI from the ground up - FastAPIを使って、データベースからゼロからシンプルなREST APIを構築する方法を学びます。
動画
- Building a Stock Screener with FastAPI - FastAPIを使ってウェブベースの株価スクリーニングアプリケーションを開発する際に、FastAPIの多くの機能(Pydanticモデル、依存性注入、バックグラウンドタスク、SQLAlchemy統合)に触れられます。
- Building Web APIs Using FastAPI - FastAPIを使ってウェブアプリケーションプログラミングインターフェース(RESTフルAPI)を構築します。
- FastAPI - A Web Framework for Python - FastAPIを使って数値検証を行う方法を学びます。
- FastAPI vs. Django vs. Flask - 2020年におけるPython向けフレームワークで、async/awaitを最もよく使っているのはどれ?最も速いのはどれ?
- Serving Machine Learning Models As API with FastAPI - FastAPIを使って機械学習APIを構築します。
コース
- Test-Driven Development with FastAPI and Docker - Python、FastAPI、Dockerを使ってテキスト要約マイクロサービスを構築・テスト・デプロイする方法を学習します。
- Modern APIs with FastAPI and Python - FastAPIを使ってクラウド上で実行されるAPIを作成するためのコースです。
- Full Web Apps with FastAPI Course - FastAPIを使ってフルウェブアプリケーションを構築する方法を学びます。FlaskやDjangoと同等の能力を獲得できます。
- The Definitive Guide to Celery and FastAPI - FastAPIアプリケーションにCeleryを追加して、非同期タスク処理を提供する方法を学びます。
ベストプラクティス
- FastAPI Best Practices - GitHubリポジトリにまとめられたベストプラクティスのコレクション。
- FastAPI-Dishka-FastStream - FastAPI、dishka、faststream、sqlalchemy、pydanticを組み合わせた構成。
- FastAPI Clean Example - FastAPIで構築されたクリーンアーキテクチャのバックエンド例。
ホスティング
PaaS
(Platform as a Service)
- AWS Elastic Beanstalk
- Fly (tutorial, Deploy from a Git repo)
- Google App Engine
- Heroku (Step-by-step tutorial, ML model on Heroku tutorial)
- Microsoft Azure App Service
IaaS
(Infrastructure as a Service)
サーバーレス
フレームワーク:
コンピュート:
プロジェクト
ボイラープレート
- Full Stack FastAPI and PostgreSQL - Base Project Generator - FastAPIプロジェクト向けのテンプレート・生成器です。 このテンプレートにはFastAPI、React、SQLModel、PostgreSQL、Docker、GitHub Actions、自動HTTPSなどが含まれます(FastAPI作者のSebastián Ramírezが開発)。
- FastAPI and Tortoise ORM - FastAPI(ウェブフレームワーク)とTortoise-ORM(データベース操作に頭痛なし)を使った、強力でシンプルなウェブAPIテンプレート。
- FastAPI + SQLAlchemy 2 + PostgreSQL Template - Docker化されたスタートアップテンプレート(依存性注入、Alembicのマイグレーション、justfileワークフローを含む)。
- FastAPI Model Server Skeleton - 機械学習モデルを生産環境で提供できるためのスケルトンアプリ。
- cookiecutter-spacy-fastapi - spaCyモデルの迅速なデプロイをFastAPIで実現する方法を学びます。
- cookiecutter-fastapi - Machine Learning、Poetry、Azure Pipelines、pytestを使用したFastAPIプロジェクト用のCookiecutterテンプレート。
- openapi-python-client - OpenAPIからFastAPIを使って現代的なFastAPI Pythonクライアントを生成します。
- Pywork - FastAPIプロジェクト向けのテンプレート・生成器です。 Yeoman
- fastapi-gino-arq-uvicorn - Pythonで高パフォーマンスの非同期REST APIテンプレート。FastAPI + GINO + Arq + Uvicorn(RedisとPostgreSQLで動作)。
- FastAPI and React Template - FastAPI、TypeScript、Docker、PostgreSQL、Reactを使ったフルスタックCookiecutterベースライン。
- FastAPI Nano - シンプルなFastAPIテンプレートでファクトリパターンアーキテクチャを実装。
- FastAPI template - 柔軟で軽量なFastAPIプロジェクトジェネレーター。SQLAlchemy、複数データベース、CI/CD、Docker、Kubernetesのサポートを含む。
- FastAPI on Google Cloud Run - FastAPI、SQLModel、Google Cloud Runを使ってAPIを構築するためのベースライン。
- FastAPI with Firestore - FastAPIとGoogle Cloud Firestoreを使ってAPIを構築するためのベースライン。
- fastapi-alembic-sqlmodel-async - FastAPI、Alembic、async SQLModelをORMとして使うプロジェクトテンプレート。
- fastapi-starter-project - FastAPI、SQLModel、Alembic、Pytest、Docker、GitHub Actions CI を使用するプロジェクトテンプレート。
- Full Stack FastAPI and MongoDB - Base Project Generator - フルスタック、現代的なウェブアプリケーションジェネレーター。FastAPI、MongoDB、Docker、Celery、Reactフロントエンド、自動HTTPSなど、すべてを含む。
- Uvicorn Poetry FastAPI Project Template - FastAPIアプリケーションの開始に使えるCookiecutterプロジェクトテンプレート。Dockerコンテナ内でUvicorn ASGIサーバーで動作し、Kubernetes上で実行可能。AMD64およびARM64CPUアーキテクチャをサポート。
Dockerイメージ
- inboard - FastAPIアプリケーションを動かし、開発を速く進めるためのDockerイメージ。
- uvicorn-gunicorn-fastapi-docker - Python 3.7および3.6で高パフォーマンスのFastAPIウェブアプリケーションを実行するための、Gunicornで管理されたUvicornのDockerイメージ。パフォーマンス自動調整をサポート。
- uvicorn-gunicorn-poetry - Pythonウェブアプリケーションを実行するための、Gunicornを使用したUvicornワーカーを搭載したDockerイメージ。依存関係の管理および仮想環境の構築にはPoetryを使用。AMD64およびARM64CPUアーキテクチャをサポート。
- uvicorn-poetry - Kubernetes上でPythonウェブアプリケーションを実行するための、Uvicorn ASGIサーバーを搭載したDockerイメージ。依存関係の管理および仮想環境の構築にはPoetryを使用。AMD64およびARM64CPUアーキテクチャをサポート。
オープンソースプロジェクト
- Astrobase - どこでもシンプルで高速かつ安全にデプロイ可能。
- Awesome FastAPI Projects - FastAPIを使用するプロジェクトの一覧。
- Bitcart - 販売業者、ユーザー、開発者向けプラットフォーム。簡単なセットアップと使用を提供。
- Bali - FastAPIとgRPCをベースにしたクラウドネイティブマイクロサービス開発を簡素化。
- Bunnybook - FastAPI、React+RxJs、Neo4j、PostgreSQL、Redisで構築されたミニマムなソーシャルネットワーク。
- Coronavirus-tg-api - 世界的なコロナウイルス(COVID-19、SARS-CoV-2)の感染拡大を追跡するAPI。
- Dispatch - セキュリティインシデントの管理。
- FastAPI CRUDの例:
- FastAPI with Observability - Grafana上でOpenTelemetryとOpenMetricsを用いて、FastAPIアプリケーションの観測(トレース、メトリクス、ログ)の3つの柱を観察。
- FastAPI Websocket Broadcast - Websocket ‘broadcast’デモ。
- FastAPI with Celery, RabbitMQ, and Redis - FastAPIとCelery(RabbitMQによるタスクキュー)、Celeryバックエンド(Redis)、タスク監視(Flower)を用いた最小限の例。
- FuturamaAPI - ベストプラクティスに基づいたRESTおよびGraphQLプレインド。WebSockets、SSE、コールバック、秘密メッセージなど、さらに多くの機能を提供。
- JeffQL - GraphQLとJWTを用いたシンプルな認証およびログインAPI。
- JSON-RPC Server - FastAPIをベースにしたJSON-RPCサーバー。
- Mailer - 静的ウェブサイト向けのシンプルなメールサービスミクロサービス
- Markdown-Videos - マークダウンコンテンツに埋め込むためのスケール可能なサムネイル生成API
- Nemo - Nemoで生産性を高めよう
- OPAL (Open Policy Administration Layer) - Open-Policyに上位に実時間で認可更新を提供。FastAPI、Typer、FastAPI WebSocket pub/subで構成
- OSBot-Fast-API - 型安全なFastAPIラッパー。ミドルウェア、HTTPイベントトラッキング、AWS Lambda統合、テストユーティリティ、Type_Safe、Pydantic、データクラス間の自動変換を提供
- Polar - FastAPI、SQLAlchemy、Alembic、Arqで構築された開発者向けの資金調達および収益化プラットフォーム
- RealWorld Example App - mongo
- RealWorld Example App - postgres
- redis-streams-fastapi-chat - WebSockets、AsyncioおよびFastAPI/Starletteを使用した、Redis Streamsをバックアップしたシンプルなチャットアプリ
- Sprites as a service - セルラーリアルを用いて、あなたの個人用8ビットアバターを生成
- Slackers - SlackのWebhook API
- TermPair - ブラウザからエンドツーエンド暗号化でターミナルを表示・制御
- Universities - 世界中の+9600大学の情報を取得できるAPIサービス
スポンサー
スポンサーをご覧いただき、このオープンソースプロジェクトをご支援ください: