
Web API の開発を可能にする Python フレームワークである FastAPI は、ここ数年で人気を博しています。
API (Application Programming Interface) は、現代のアーキテクチャの基盤です。 アプリケーションをモジュール化して分離することができます。 これにより、アプリケーションを迅速に作成でき、保守が容易になります。
したがって、Python を使用して Web アプリケーションを開発する予定がある場合は、FastAPI を学習することをお勧めします。 この記事では、FastAPI の基本についてすべて説明します。
FastAPI とは何ですか?
FastAPI は、Python ベースの Web フレームワークです。 近年、多くの注目を集めています。 その開発構造は、Python Web 開発を学びたい人に最も人気のある Flask に似ています。
FastAPI は簡単に使用でき、そのドキュメントは明確で理解しやすいものです。 FastAPI は、Microsoft、Netflix、Uber などの大手テクノロジ企業で使用されています。
FastAPI には、API ビルダーに期待されるすべての機能がありますが、これらに限定されません。 これを使用して、ほとんどのユーザーが知らない後方 WSGI をマウントできます。
FastAPI の主な目的は、名前が示すように API エンドポイントを構築することです。 これは、JSON で Python 辞書データを返すか、OpenAPI の対話型 Swagger UI を使用するのと同じくらい効率的に実行できます。
FastAPI は API に限定されません。 これは、Jinja2 テンプレート エンジンを使用した Web ページの配信から、WebSockets を利用したアプリケーションの提供まで、Web フレームワークが行うほとんどすべてに使用できます。
FastAPI の利点は次のとおりです。
- FastAPI を使用すると、ネストされた JSON クエリを使用している場合でも、開発者のデータ型を検証できます。
- オートコンプリート機能を提供するため、アプリケーションをより短時間で作成し、労力を軽減できます。
- OpenAPI および JSON Schema ボキャブラリと互換性があり、JSON ドキュメントを検証して注釈を付けることができます。
- FastAPI を使用すると、graphene–python と呼ばれる Python ライブラリを使用して、GraphQL API をすばやく構築できます。
- FastAPI は、OAuth 2.0 および外部プロバイダーと互換性があります。
FastAPI の欠点は次のとおりです。
- FastAPI はまだ新しいフレームワークであるため、ガイドライン コミュニティはほとんどありません。 書籍、コース、チュートリアルなど、十分な外部教育情報がありません。
- すべてのコンポーネントを FastAPI で結び付ける必要があるため、メイン ファイルが非常に大きくなったり、混雑したりする可能性があります。
FastAPI の独自機能
これらは、FastAPI をこれまでで最も人気のある Python Web フレームワークにしている独自の機能です。
- 高いパフォーマンス: FastAPI は、他の Python フレームワークよりもパフォーマンスが優れています。 FastAPI の速度指向のフレームワークは、最高の選択肢です。 Starlette の機能を活用し、API を作成し、すぐに使えるコードを作成することで、すべてがより高速でパフォーマンスが向上します。
- 迅速なコーディング: 開発者は、本番対応のコードを使用して新しいものを作成する必要はありません。 これにより、プロセスが約 200% から 30% 高速化されます。 FastAPI は Starlette で実行され、データの検証とシリアル化のための API を構築するために使用できる多くの機能を備えています。 フレームワークには必要なすべてのコンポーネントが既に配置されているため、コーディングにかかる時間が短縮されます。
- 最小限のバグ: フレームワークには、ほとんどのコードをピースに自動的に挿入するオートコンプリート機能があります。 これにより、エラーの可能性が最小限に抑えられ、出力品質が向上します。
- わかりやすい: FastAPI は最新の Python 以外は何もしません。 これは Python 3.6 の修正バージョンであり、新しい構文は含まれていません。 このフレームワークは、言語をよく理解している人なら誰でも使用できます。
- 最小限の労力: FastAPI は、開発者の最小限の労力で OpenAPI ドキュメントを自動的に生成します。 この情報は、アプリケーションの /doc ディレクトリにあります。 ドキュメントには、API エンドポイント、リターン コード、応答パラメーター、およびその他の詳細に関する詳細情報が含まれています。
- エディターのサポート: フレームワークのすべてのコンポーネントは、オートコンプリートを考慮して設計されています。 シンプルで、開発者はすぐに使えるコードを作成できます。 インタラクティブなドキュメントを使用して、ブラウザから直接コードをテストすることもできます。
- オープン スタンダード: FastAPI の Python Web フレームワークは大きな利点です。 このフレームワークは、以前は Swagger と呼ばれていた OpenAPI と互換性があり、API を作成できます。
FastAPI のインストール
Linux または Windows に FastAPI をインストールする簡単な手順を次に示します。
#1。 Linux での FastAPI のインストール
次のコマンドを使用して Linux に Python 3 をインストールします。
sudo apt install python3
以下のコマンドを使用して Linux に pip をインストールします。
sudo apt install python3-pip
次に、FastAPI を Linux にインストールします。
pip install fastapi
ASGI サーバーも必要です。 pipを使ってuvicornをインストールします。
pip install "uvicorn[standard]"
#2。 Windows での FastAPI のインストール
Microsoft ストアを使用して Windows に Python 3 をインストールします。 これにより、pipもインストールされます。
次に、FastAPI を Windows にインストールします。
pip install fastapi
最後に、ASGI サーバー uvicorn をインストールします。
pip install "uvicorn[standard]"
FastAPI の新時代の使用
以下に、FastAPI の新時代の使用例をいくつか示します。
自動化されたドキュメント
API の種類とエンドポイントに関するドキュメントは必須です。 この問題は、OpenAPI、Swagger UI、および ReDoc を使用して解決できます。 これらは FastAPI で自動的にパックされます。 これにより、ツールをセットアップする必要がなくなり、コードに集中できます。
型付き Python
FastAPI は Python 3.6 型宣言を使用します (Pydantic のおかげです)。 これは、変数の型と型を指定できる Python 機能を使用することを意味します。 このフレームワークはそれを大いに活用し、優れたエディター サポートを提供します。 オートコンプリートは驚くほど機能します。
検証
Pydantic はすでに検証をこのフレームワークに統合しています。 標準の Python 型の検証とカスタム フィールドの検証を実行できます。
セキュリティと認証
これは、あらゆる API の重要な部分です。 多くの場合、コードを繰り返すだけなので、その一部をフレームワークに組み込んでみませんか? FastAPI はまさにこれを行います。
このライブラリは、HTTP Basic、OAuth2 トークン (JWT トークン)、およびヘッダー API キーをサポートしています。
非同期性
FastAPI はデフォルトで非同期エンドポイントをサポートしているため、コードがよりシンプルで効率的になります。 これは、Flask よりも大きな利点です。
FastAPI と Flask: 主な違い
使い方の違い
API の構築に必要なすべてを提供するフルスタック プラットフォームである FastAPI を利用できます。 一方、Flask はマイクロ フレームワークであり、FastAPI と同じ機能をすべて提供するわけではありません。 Flask は、アイデアのプロトタイプを作成したり、簡単な Web アプリをすばやく作成したりする必要がある場合に役立ちます。
Flask と FastAPI は、使用方法が大きく異なります。 Flask フレームワークは新しいアイデアやアプリケーションのプロトタイプ作成に使用でき、FastAPI フレームワークは API の構築に使用できます。 コーディングの知識がなくても、バックエンド サーバーをすばやく構築できます。
小規模な Web サイトおよび Web アプリケーション
FastAPI は使いやすく、軽量で、小規模な Web およびアプリケーション開発に使用できます。 これには、アプリケーション内のデータ オブジェクトを処理するオブジェクト リレーショナル レイヤー (ORM) が含まれているため、コーディングによってデータ オブジェクトにすばやくアクセスできます。
ORM レイヤーはデータベースを追跡し、新しい情報が Web サイトまたはアプリケーションから追加、変更、または削除されたときに手動で更新することを忘れることができます。
WSGI 対 ASGI
基本的な違いに気づいたかもしれません。Flask は標準インターフェースに WSGI を使用しますが、FastAPI は ASGI を使用します。 前述のように、WSGI はリクエストを同期的に処理します。 リクエストは順次処理されます。 最後のタスクが完了するまで、開始することはできません。
ASGI はリクエストを非同期的に処理します。 これにより、タスクを自分のペースで完了することができ、他の人を待つ必要がなくなります。
コミュニティ
もう 1 つの違いは、コミュニティです。 Flask は、FastAPI よりも長く存在するコミュニティです。 これは、優れたドキュメントと、Flask について書いている他の人からの外部の助けを意味します。
FastAPI はまだ新しいプロジェクトであるため、コミュニティはまだそれほど成長していません。 これは、十分なドキュメントがあるにもかかわらず、外部からの支援があまりないことを意味します。
以下は、FastAPI と Flask の要約表です。
FastAPIFlaskデータ検証が組み込まれています.データ検証はありません.非同期タスクのサポートは利用できます.非同期タスクのサポートは利用できません.ASGI仕様を実装しています.WSGIアプリケーションをサポートしています.自動ドキュメントのサポート.手動ドキュメントのサポート.エラーメッセージはJSON形式で表示されます.エラーメッセージはHTMLページに表示されます.より小さなコミュニティのサポート.リッチコミュニティのサポート
FastAPI または Flask: どちらを選択する必要がありますか?
FastAPI と Flask を使用すると、Python Web サーバーとデータ サイエンス アプリケーションをすばやくセットアップできます。 どちらも展開には同じ労力が必要ですが、次のプロジェクトに最適なフレームワークはどれでしょうか?
FastAPI は、速度とパフォーマンスが最も重要な場合に最適なオプションです。 このフレームワークは、CDN を構築していて大量のトラフィックが予想される場合に最適です。 FastAPI を使用すると、フレームワークをダウンロードしてすぐに使用できます。 プロジェクト テンプレートは時間を節約し、時間を節約するのに役立ちます。
API を構築する場合は、Flask よりも FastAPI の方が適しています。 これは、マイクロサービスやその他の考慮事項を考慮する場合に特に当てはまります。 このフレームワークを中心に構築されたツールが既に多数ある場合は、Flask が最適です。
結論
以上、FastAPI についてでした。 FastAPI は、優れた速度とパフォーマンスを提供します。 このフレームワークは、コンテンツ配信ネットワークを構築していてトラフィックが予想される場合に最適です。 FastAPI の革新的なフレームワークとプロジェクト テンプレートは、時間を節約するのに役立ちます。
API、特にマイクロサービスの作成には Flask の方が適している可能性があります。 FastAPI は Flask よりも優れています。 すでに広範囲に使用している場合は、Flask を選択することをお勧めします。
API を構築するために、いくつかの一般的な Python フレームワークを調べることもできます。