Python を使用して強力な API を構築します。その方法を調べてみましょう!
Python は、今日最も多用途なプログラミング言語の 1 つです。読みやすさ、構文の複雑さの軽減、学習の容易さにより、人気が高まっています。過去数十年にわたり、Python は複数のアプリケーションの複数のドメインで使用されてきました。これは、自動化、Web 開発、データ分析、アプリケーション開発、そしてこの記事の焦点であるアプリケーション プログラミング インターフェイス (API) に使用されてきました。
アプリケーション ユーザー インターフェイスは、インターネット経由で一部の情報や機能にアクセスするために使用されます。たとえば、Twitter API を使用して、特定のハッシュタグのツイートを収集できる機能を実行する Python プログラムを作成できます。 API を使用すると、開発者は特定のテクノロジを使用して、特定の事前定義された操作を使用するアプリケーションを構築することが容易になります。さまざまな点と点を結びつけるのに役立ちます。
ありがたいことに、Python フレームワークはたくさんありますが、そのすべてが API 向けであるわけではありません。 API の開発に使用できる一般的なもののいくつかを見てみましょう。
ジャンゴREST
Django REST は、Web API を構築するために開発者によってよく使用される Python ベースの REST フレームワークです。 REST は Representational State Transfer の略で、データ通信用の Web ベースのアーキテクチャに使用されます。 HTTP を使用してマシン間で呼び出しを行います。 GET、PUT、POST、DELETE は、Django REST フレームワークで使用されるいくつかの標準メソッドです。
Django REST フレームワークは、Django を使用して REST API を構築する方法にすぎないため、使用できるツールキットにすぎません。それは私たちに多くの追加機能を与えてくれます。 pip を使用すると、単一のコマンドで Django REST フレームワークをシステムにインストールできます。ただし、Django REST をインストールする前に、システムに Python バージョン 3.5 以降と Django が必要です。
Django REST の機能:
- Web で閲覧可能な API で、開発者にとって非常に使いやすい
- 複数の組み込み認証ポリシー
- ORM データ ソースと非 ORM データ ソースの両方をサポートするシリアル化
- 参照および学習するための広範で優れたドキュメント
- 非常に活発なコミュニティサポート
- Red Hat、Mozilla、Heraku などの組織から信頼されています
- Django への自動 URL ルーティングをサポート
- テスト、キャッシュ、スロットリングなどをサポートします。
フラスコの休息
Flask Restful は、開発者が REST API を迅速に構築するために使用する Flask フレームワークの拡張機能です。非常に軽量なモジュールを備えているため、マイクロ Web サービスを作成することで知られています。これは迅速であり、Flask を初期化し、それを使用して API を作成するのに必要なコード行はわずか数行です。
セットアップは簡単で、API 構築のベスト プラクティスを推奨します。ここ数年で、Flask には多くの機能が追加され、今ではフルスタック フレームワークと同じくらい優れています。これは、Web 開発者が Web アプリケーションとその API を構築する際に推奨する選択肢です。
Flask Restful の機能:
- 非常に軽量で取り付けが簡単
- flaskrestful の構成要素であるリソースを提供します。複数の HTTP メソッドにアクセスするために使用されます。
- データフォーマット用のフィールドモジュールと marshal_with() デコレータが付属しています
- レンダリング後に応答にどの出力フィールドを表示するかを制御できます。
- データ型に基づいてカスタムフィールドと入力を追加できます。
- XML、CSV、HTMLなどの他の表現をサポートするためのrepresentation()デコレータを提供します。
ファルコン
Falcon は、信頼性が高くパフォーマンスの高い大規模なアプリケーション バックエンドとマイクロサービスを構築するために使用される Web フレームワークです。 Falcon は、オブジェクト指向およびクラスベースのインターフェイスを使用して API リソースを定義します。 WSGI に準拠しているため、複数のサーバーおよびプラットフォームと互換性があります。
Falcon は、クリーンなデザインを作成するために使用される HTTP および REST アーキテクチャ スタイルを採用しています。 Falcon のモットーは、できる限り少ないことを実行しながらも非常に効果的であることです。この REST フレームワークは品質管理に重点を置いています。
ファルコンの特徴:
- 開発用のサーバーとデバッガが内蔵されています
- 最小限のセットアップで軽量
- 主にパフォーマンスを高速化するために使用されます
- URI からリソースへのマッピングは REST に基づいて行われます
- ルーティング、HTTP プロトコル処理メディア処理、Cookie、および URI ユーティリティをサポート
- NoSQLと簡単に統合
- 統合単体テストをサポート
- 安全な Cookie のサポートを提供します
- Python 2.7、3.5以降をサポートし、Pypyと互換性があります
接続
Connexion はHTTP リクエストを自動的に処理し、OpenAPI 仕様に基づいています。 OpenAPI 仕様は YAML 形式で記述されます。 Python コードに基づいて生成された仕様を取得する他のツールとは異なり、Connexion を使用すると、OpenAPI 仕様を作成し、関連する Python 関数のエンドポイントをマップできます。 REST API を詳細に記述すると、Connexion はそれが機能することを確認します。
接続機能:
- 提供された仕様に基づいて、リクエストとエンドポイントを検証します。
- OAuth 2 を使用してトークンベースの認証を処理します。
- API のバージョン管理をサポート
- Web Swagger コンソール UI が付属しており、API のエンドポイントを呼び出すこともできます。
- ペイロードを自動的にシリアル化します
ファストAPI
名前が示すように、 FastAPI はAPI を構築するための最も高速で高性能な Python フレームワークの 1 つです。これは、完全な Web フレームワークの完全なパッケージです。 FastAPI を使用すると、コードを 200 ~ 300% 高速に開発できます。 FastAPI の人気は Python コミュニティで大幅に高まっており、これまでに 200 人以上の寄稿者がおり、28.6K が開始されています。
FastAPI は ASGI 仕様に基づいており、主に非同期 Web アプリケーションの構築に使用されます。以下にその機能の一部を示します。
- オープン標準に基づく – OpenAPI、JSON スキーマ、自動クライアント コード生成
- ブラウザから API を呼び出してテストするための Swagger ユーザー インターフェイス
- インタラクティブ API ドキュメント
- コード内の開発者のエラーによって生成されるバグを 40% 削減します。
- コードの重複を最小限に抑える
- オートコンプリートを備えた直感的なエディターのサポート (VSCode/PyCharm)
- 統合されたセキュリティと認証が付属しています
- すべての依存関係を自動的に処理する依存関係注入システム
- StarletteおよびPydanticと完全な互換性
- プラグインの無制限のサポート
- PyTestを使用したアプリケーションテストをサポート
- SQLデータベース、NoSQLデータベース、GraphQLをサポート
ハグ
Hug は、API、CLI、ローカル パッケージを構築できる非常に優れたマイクロフレームワークです。 API を一度作成すれば、コード内のどこでもその API を使用できます。 Hug はコンパイルに Cython を使用し、必要な場合にのみリソースを消費します。これにより、Hug は非常に高いパフォーマンスを実現できます。
pip を使用して 1 つのコマンドで Hug をインストールできます。これは、Python 3 で HTTP REST API を構築する最もクリーンな方法の 1 つです。API を構築するために、Hug はバージョンの依存関係とインターフェイスを API ビジネス ロジックから分離しました。開発者向けの API 開発を簡素化する複数のインターフェイスを提供します。
ハグの特徴:
- どこでも一度だけ使用できるという哲学に従っています
- 複数のインターフェイス (CLI、HTTP、またはローカル関数) を介して API ロジックを公開します
- API の完全な Python スタックをテストするための Hug.test モジュールを提供します
- クリーンでわかりやすいドキュメント
イブ
Eve はFlask と Cerberus の上に構築されています。この Python フレームワークの目標は、API 開発をシンプルかつ迅速にすることです。高度にカスタマイズ可能な RESTful Web サービスを簡単に作成します。このフレームワークは主に中規模のプロジェクトに好まれます。
イブの特徴:
- あらゆる種類の CRUD 操作をサポート
- カスタマイズ可能なエンドポイント、ページネーション、並べ替え、フィルタリングをサポート
- 認証、レート制限、キャッシュなどの高度な機能を提供します
- SQL データベース、MongoDB、Elasticsearch、Neo4js と簡単に統合できます。
- すぐに使えるデータ検証のサポート
- CORS、クロスオリジンリソース共有をサポート
- 強化されたロギングのためのいくつかのイベントを証明しました
コーニス
Corniceは Pyramid の REST フレームワークであり、REST 風の Web サービスを構築および文書化するためのヘルパーを提供します。 Pyramid は、アプリケーションに合わせて拡張できるように設計されています。可能な限り、HTTP 仕様に自動的に従います。
コーニスの特徴:
- コーニス内の 1 つのパスは 1 つのサービスに相当します
- データが無効な場合は、コンテンツの検証後に自動的に 400 エラーをスローします
- CORS (Cross-Origin Resource Sharing) サポートをサービスに追加します
- 認可に Pyramid のアクセス制御リスト (ACL) を使用する
- サポートされているすべてのコンテンツ タイプを含むエラー メッセージとともに、無効なメディア タイプに対して 406 Not Acceptable を返します。
- すべてのルートの URL プレフィックスをサポート
- 自動テスト用の Python のコマンドライン駆動ツールである Tox を使用します
結論
以上が、API を構築するための人気のある Python フレームワークのいくつかのリストでした。このリストが興味深いものだと思っていただければ幸いです。これらの Python フレームワークが提供するものを理解するには、試してみる必要があります。何を求めている?これらの REST フレームワークのいずれかを選択し、Python で API の構築を開始します。
次に、JavaScript フレームワークを調べて API を構築します。