ホームページ > バックエンド開発 > Python チュートリアル > OpenAPI をサポートするトップ Python API フレームワーク

OpenAPI をサポートするトップ Python API フレームワーク

Patricia Arquette
リリース: 2024-12-27 22:18:09
オリジナル
729 人が閲覧しました

毎月、新しい Python Web フレームワークがリリースされ、新しい機能セット、パフォーマンスの向上、以前のものよりも明確な構文が追加されているようです。ただし、無視されがちな機能の 1 つは、OpenAPI のサポートです。 API のマーケティングなど、OpenAPI の利点について長々と説明してきましたが、要するに、Web フレームワークを介して OpenAPI を生成することが、API ドキュメントが API 実装と一致していることを確認する最良の方法です。新しいフレームワークは OpenAPI の重要性を認識し始めているようです。Robyn などの一部のフレームワークでは、ベータ版の一部として OpenAPI ドキュメント生成が追加されています。

この記事では、Python で API を構築するための最も人気のある 20 個の API フレームワークとライブラリについて説明します。これらは、組み込みまたは外部ライブラリ/拡張機能を介して OpenAPI/Swagger 仕様の生成をサポートしています。

1.高速API

Top Python API Frameworks with OpenAPI Support

FastAPIとは何ですか?

FastAPI は、標準の Python 型ヒントに基づいて Python 3.6 で API を構築するための最新の高性能 Web フレームワークです。迅速な開発と高効率を実現するように設計されています。 Zuplo は、Python での API 開発の促進を支援する FastAPI プロジェクトの誇りを持ったスポンサーです。

FastAPI OpenAPI/Swagger のサポート

  • 組み込みサポート: FastAPI は OpenAPI を自動的に生成します (以前は Swagger) スキーマをコードから取得します。
  • インタラクティブなドキュメント: 提供するもの Swagger UI および ReDoc インターフェイスは、すぐに使える /docs および /redoc エンドポイント経由でアクセス可能です。

FastAPI の長所と短所

長所

  • 高パフォーマンス: の使用により、NodeJS や Go に匹敵します。 非同期プログラミング。
  • 自動ドキュメント: OpenAPI スキーマと対話型ドキュメントを生成します。 自動的に。
  • 使いやすさ: 簡潔な構文で開発者に優しい。
  • 検証: 型ヒントに基づいてデータ検証に Pydantic を使用します。
  • 非同期サポート: Starlette 上に構築され、非同期プログラミングをサポートします。

短所

  • 学習曲線: Python の型ヒントと非同期についての理解が必要です プログラミング。
  • 比較的新しい: 一部の古いフレームワークよりも成熟度は劣りますが、 成長するコミュニティ。
2. Django REST フレームワーク (DRF)

Django REST フレームワークとは何ですか?

Django REST Framework は、人気のある高レベル Python Web フレームワークである Django を使用して Web API を構築するための強力で柔軟なツールキットです。 Zuplo は、Django API 開発エコシステムの改善を継続するために、DRF プロジェクトを誇りを持って後援しています。

Django Rest フレームワーク OpenAPI/Swagger のサポート

  • サードパーティパッケージ: 次のようなパッケージによる OpenAPI サポート drf-yasg (OpenAPI 2.x / Swagger) および drf-spectacular (OpenAPI 3.x)。

Django REST フレームワークの長所と短所

長所

  • Django との統合: ORM などの Django の堅牢な機能を活用します。 認証。
  • 包括的: シリアル化、認証、 権限。
  • コミュニティ サポート: 大規模なエコシステムとコミュニティ。

短所

  • 複雑さ: 単純な API には過剰になる可能性があります。
  • パフォーマンス: 抽象化レイヤーにより遅くなる可能性があります。

3. フラスコ

フラスコとは何ですか?

Flask は、Python で書かれたマイクロ Web フレームワークです。シンプルさと拡張性で知られています。

Flask OpenAPI/Swagger のサポート

  • 拡張機能が必要: 次のような拡張機能を使用します。 APIFairy、または OpenAPI サポートの Flask-Smorest。
  • 自動ドキュメント: これらの拡張機能は Swagger UI と OpenAPI 仕様。

フラスコの長所と短所

長所

  • 軽量: ミニマリストのコアで、簡単に始めることができます。
  • 柔軟性: 多数のプラグインで高度に拡張可能です。
  • 大規模コミュニティ: 豊富なリソースとサポート。

短所

  • 手動セットアップ: OpenAPI サポートなどの機能については追加のセットアップが必要です。
  • 一貫性のない拡張機能: 拡張機能間で品質とメンテナンスの状態が異なります。 拡張機能。

4.接続

コネクションとは何ですか?

Connexion は、Flask 上に構築された OpenAPI 仕様に基づいて HTTP リクエストを自動的に処理するフレームワークです。

Connexion OpenAPI/Swagger のサポート

  • ファーストクラス OpenAPI 統合: OpenAPI 仕様を使用してリクエストをルーティングします そして入力を検証します。
  • 自動ドキュメント: OpenAPI ファイルに基づいて Swagger UI を提供します。

接続の長所と短所

長所

  • API ファースト開発: API コントラクトを事前に設計することを奨励します。 実装。
  • 入力検証: OpenAPI に対してリクエストを自動的に検証します。 スキーマ。
  • 定型句の削減: コードの重複を削減します。

短所

  • 剛体構造: OpenAPI 仕様をコードと同期して維持する必要があります。
  • 複雑さ: 慣れていない人にとっては難しいかもしれません。 API ファースト/仕様ファーストのアプローチ。

5.イブ

イブとは何ですか?

Eve は、Flask、MongoDB、Redis を利用したすぐに使える REST API フレームワークです。

Eve OpenAPI/Swagger のサポート

  • 拡張機能が必要です: を使用します eve-swagger は Swagger/OpenAPI ドキュメントを生成します。

イブの長所と短所

長所

  • クイックセットアップ: 最小限の構成で迅速な API 開発を行います。
  • データ処理: データ検証を備えた MongoDB の組み込みサポート。
  • 機能: ページネーション、並べ替え、フィルタリングなどをサポートします。

短所

  • データベース依存関係: 主に MongoDB 用に設計されています。
  • 柔軟性: 慣例から逸脱する必要がある場合、柔軟性が低くなります。

6.サニック

Top Python API Frameworks with OpenAPI Support

サニックとは

Sanic は、高速になるように作成された Python 3.7 Web サーバーおよび Web フレームワークです。これにより、非同期リクエストの処理が可能になります。 Zuplo は Sanic の誇りあるスポンサーであり、Python API のパフォーマンスの限界を押し上げることに貢献しています。

Sanic OpenAPI/Swagger のサポート

  • 組み込みサポート: Sanic Extensions はすぐに使える機能を提供します。 v3.0 OpenAPI 仕様を使用して自動生成された API ドキュメント。

サニックの長所と短所

長所

  • 高パフォーマンス: 非同期機能により、非常に高速になります。
  • 非同期/待機構文: 最新の Python 非同期サポート。

短所

  • 小規模なエコシステム: 以前に比べて拡張機能やコミュニティ サポートが少ない より大きなフレームワーク。
  • 成熟度が低い: いくつかの代替案ほど実戦テストされていません。

7.ファルコン

ファルコンとは何ですか?

Falcon は、高速な Web API とアプリ バックエンドを構築するための最小限の WSGI ライブラリです。

Falcon OpenAPI/Swagger のサポート

  • 必要な拡張機能: のようなライブラリ falcon-openapi または falcon-apispec は OpenAPI サポートを有効にします。これらの拡張機能はいずれも更新されてから何年も経っていることは注目に値します。
  • 手動統合: OpenAPI を統合するには、さらに実践的なセットアップが必要になる場合があります。

ファルコンの長所と短所

長所

  • パフォーマンス: 速度に関して高度に最適化されています。
  • 軽量: 依存関係がほとんどないミニマルなデザイン。

短所

  • すぐに使える機能が少ない: 次のような機能には追加の作業が必要です 認証。
  • 小規模コミュニティ: リソースと拡張機能が少なくなります。

8. ハグ

ハグとは

Hug は、可能な限りシンプルな API を開発できる Python 3 フレームワークです。

Hug OpenAPI/Swagger のサポート

  • 組み込みサポート: ドキュメントと OpenAPI を自動的に生成します コードの注釈からスキーマを取得します。残念ながら、これは OpenAPI または Swagger 形式ではないため、自分で変換する必要があります。始めるのに役立つ簡単なスクリプトを作成しました。

ハグの長所と短所

長所

  • シンプルさ: 明確な構文による最小限のセットアップ。
  • 複数のインターフェイス: HTTP、CLI、またはローカル関数を介して API を公開できます。

短所

  • コミュニティのサイズ: ユーザーベースが小さいため、サポートに影響を与える可能性があります。
  • 開発アクティビティ: 人気のあるものに比べて更新頻度が低い フレームワーク。

9. ボトル

ボトルとは何ですか?

Bottle は、Python 用の高速、シンプル、軽量の WSGI マイクロ Web フレームワークです。

ボトル OpenAPI/Swagger のサポート

  • 拡張機能が必要です: 使用します bottle-swagger または bottle-openapi-3.
  • 手動構成: API を文書化するには手動の手順が必要な場合があります。

ボトルの長所と短所

長所

  • 依存関係なし: 外部依存関係のない単一ファイル モジュール。
  • 軽量: 小規模なアプリケーションやプロトタイピングに最適です。

短所

  • 制限された機能: シンプルなデザイン。高度な機能が欠けている ボックス。
  • 小規模なエコシステム: プラグインと拡張機能が少なくなります。

10.ピラミッド

Top Python API Frameworks with OpenAPI Support

ピラミッドとは何ですか?

Pyramid は、小さく、高速で、現実的な Python Web フレームワークです。 Web アプリケーションの作成を容易にするように設計されています。

ピラミッド OpenAPI/Swagger のサポート

  • 拡張機能 Required:pyramid_openapi3 は最新の拡張機能ですが、他の拡張機能は Yelp のpyramid_swagger を使用します。 cornice を使用して Pyramid 上に API を構築する場合は、cornice-swagger 拡張機能を使用して OpenAPI サポートを追加できます。

ピラミッドの長所と短所

長所

  • 柔軟性: 小規模なアプリケーションと大規模なアプリケーションの両方に適しています。
  • セキュリティ: セキュリティの実践に重点を置きます。

短所

  • 複雑さ: 学習曲線が急峻になります。
  • 人気: Django や Flask に比べて主流ではありません。

11.Molten (非推奨)

モルテンとは何ですか?

Molten は、Python で HTTP API を構築するための最小限で高速かつ拡張可能なフレームワークです。このプロジェクトは 2024 年 4 月に廃止されました。

Molten OpenAPI/Swagger のサポート

  • 組み込みサポート: ルート定義から OpenAPI ドキュメントを自動的に生成します。
  • 型アノテーション: ルーティングと検証に型ヒントを使用します。

モルテンの長所と短所

長所

  • パフォーマンス: 速度のために最適化されています。
  • 最新の機能: 依存関係の注入と型の注釈をサポートします。

短所

  • 限定的な採用: コミュニティが小さく、リソースが少ない。
  • 成熟度が低い: それほど広く使用またはテストされていません。

12. ブラックシープ

ブラックシープとは何ですか?

BlackSheep は、Python を使用してイベントベースの Web アプリケーションを構築するための非同期 Web フレームワークです。

BlackSheep OpenAPI/Swagger のサポート

  • 組み込みサポート: BlackSheep 最も一般的なシナリオ向けに OpenAPI ドキュメントの自動生成を実装し、ドキュメントを詳細で充実させるためのメソッドを提供します。

BlackSheepの長所と短所

長所

  • 非同期サポート: 最新の非同期 Python 用に設計されています。
  • パフォーマンス: 高性能のルーティングと処理。

短所

  • コミュニティのサイズ: ユーザーベースが小さい
  • ドキュメント: あまり包括的ではないドキュメント。

13. クォート

クォートとは何ですか?

Quart は Flask をベースにした ASGI Web フレームワークで、Flask の使いやすさに非同期サポートの利点を加えることを目的としています。

Quart OpenAPI/Swagger のサポート

  • 必要な拡張機能: Flask と同様に、OpenAPI の拡張機能に依存します。 サポート。 quart-schema は新しい拡張機能で、もう 1 つは古い quart-openapi です。
  • 互換性: 多くの Flask 拡張機能を直接使用できます。

クォートの長所と短所

長所

  • 非同期サポート: 非同期と待機を完全にサポートします。
  • 知名度: Flask と同様の API。

短所

  • 拡張機能の互換性: すべての Flask 拡張機能に互換性があるわけではありません。
  • より小さなエコシステム: クォート固有のリソースが少なくなります。

14. レスポンダー

レスポンダーとは何ですか?

Responder は、Flask、Falcon などの長所を 1 つに統合することを目的とした Python 用の Web フレームワークです。

レスポンダー OpenAPI/Swagger サポート

  • 組み込みサポート: OpenAPI ドキュメントを自動的に生成します。
  • 対話型ドキュメント: Swagger UI を提供します。

レスポンダーの長所と短所

長所

  • シンプルさ: 学習も使用も簡単です。
  • 自動ドキュメント: API ドキュメントを維持する際のオーバーヘッドを削減します。

短所

  • メンテナンス状況: 2023 年現在、あまり積極的にメンテナンスされていません。
  • コミュニティのサイズ: ユーザーベースが小さく、リソースも少ない。

15.トルネード

トルネードとは何ですか?

Tornado は、Python Web フレームワークおよび非同期ネットワーキング ライブラリです。

Tornado OpenAPI/Swagger のサポート

  • 拡張機能が必要です: 使用します tornado-swagger または同様のライブラリ。
  • 手動セットアップ: 統合するには追加の作業が必要な場合があります。

竜巻の長所と短所

長所

  • スケーラビリティ: 長時間の接続を必要とするアプリケーションに適しています。
  • 非同期: 組み込みの非同期機能。

短所

  • あまり従来的ではない: 標準の WSGI フレームワークとは異なります。
  • 複雑さ: 操作がより複雑になる可能性があります。

16.ロビン

Top Python API Frameworks with OpenAPI Support

ロビンとは

Robyn は、速度と効率を重視した高性能の非同期 Python Web フレームワークです。 PyO3 経由で Rust の Tokio ランタイムを活用し、優れたパフォーマンス メトリクスを達成します。 Robyn は、利用可能な中で最速の Python Web フレームワークの 1 つになることを目指しています。

OpenAPI/Swagger のサポート

  • 組み込みサポート: Robyn は /openapi.json の仕様と /docs のドキュメント UI の両方を備えた OpenAPI サポートが組み込まれています。

ロビンの長所と短所

長所

  • 高パフォーマンス: Rust の非同期ランタイムを利用すると、大幅なパフォーマンスが得られます。 スピードの利点。
  • 非同期: 最新の Python の async および await 構文を使用して構築されています 開発。
  • ミニマル: 不要なオーバーヘッドを回避する軽量フレームワーク。

短所

  • 成熟度: 比較的新しいため、機能や安定性に欠ける可能性があります より確立されたフレームワークと比較してください。
  • コミュニティ サポート: コミュニティが小さいほど、リソース、プラグイン、および サードパーティの拡張機能。
  • ドキュメント: 新しいドキュメントのため、包括的なドキュメントが含まれていない可能性があります。 ステータス。

17.ユビコーン

ユビコーンとは何ですか?

Uvicorn は、uvloop と httptools を使用した超高速 ASGI サーバー実装です。非同期 Python Web アプリケーション、特に FastAPI、Starlette などのフレームワークで構築されたアプリケーションを実行するように設計されています。

Uvicorn OpenAPI/Swagger のサポート

  • フレームワークではありません: Uvicorn は ASGI サーバーであり、Web フレームワークではありません。それ ルーティング、ミドルウェア、OpenAPI サポートなどの機能は提供しません。
  • フレームワークでの使用: FastAPI や Starlette、Uvicorn がアプリケーションを提供し、フレームワークが OpenAPI/Swagger サポートを処理します。

ユビコーンの長所と短所

長所

  • 高性能: uvloop と httptools.
  • 標準準拠: ASGI 仕様を実装し、 さまざまなフレームワークとの互換性。
  • 軽量: オーバーヘッドが最小限で、導入が簡単です。

短所

  • 完全なフレームワークではありません: Web フレームワークの機能は含まれていません。必要になります ASGI 互換フレームワークと組み合わせて使用​​します。

18. スターレット

スターレットとは何ですか?

Starlette は軽量の ASGI フレームワーク/ツールキットで、Python で高性能の非同期サービスを構築するのに最適です。ルーティング、ミドルウェア、セッションなど、Web アプリケーションの構築に必要な必須コンポーネントを提供します。

Starlette OpenAPI/Swagger のサポート

  • 組み込みサポート: Starlette app.routes を通じてアプリケーション上のルートを検査し、エンドポイントの docstring またはその他の属性を使用して完全な API スキーマを決定することにより、API スキーマの生成をサポートします。

スターレットの長所と短所

長所

  • 高性能: 速度と効率を重視した設計で、建築に適しています。 パフォーマンスの高い API。
  • 非同期: 最新の Python を活用して、非同期と待機を完全にサポートします 特徴
  • モジュラー設計: 開発者が必要に応じてコンポーネントを選択できるようにします。

短所

  • ミニマリスト: 初期状態では、次のような高レベルの機能がいくつかありません。 自動 OpenAPI ドキュメント。
  • 学習曲線: 非同期プログラミングの初心者にとっては難しいかもしれません。 バッテリー付属のフレームワークを好む人。

19. ライトスター

Top Python API Frameworks with OpenAPI Support

ライトスターとは何ですか?

Litestar (以前は Starlite として知られていました) は、Starlette と FastAPI からインスピレーションを得て新しく開発された ASGI フレームワークであり、パフォーマンスと使いやすさのバランスを提供することを目的としています。

Litestar OpenAPI/Swagger のサポート

  • 組み込みサポート: Litestar には 組み込みの OpenAPI スキーマ生成と自動ドキュメント。
  • 対話型ドキュメント: すぐに使える Swagger UI と ReDoc を提供します。

ライトスターの長所と短所

長所

  • パフォーマンス: 高速かつ効率的になるように設計されています。
  • 使いやすさ: 適切なデフォルトを使用して API 開発を簡素化します。
  • 最新の機能: 非同期/待機、型注釈、依存関係をサポート 注射。

短所

  • 新しさ: 新しいフレームワークであるため、コミュニティのサポートが少ない可能性があります。 リソース。
  • 進化する API: 頻繁に更新すると互換性を破る変更が発生する可能性があります。

20. API スター (非推奨)

APIスターとは何ですか?

APIStar は、OpenAPI をサポートする Web API を構築するためのフレームワークでした。このプロジェクトは 2022 年 2 月に廃止されました。

API Star OpenAPI/Swagger サポート

  • 組み込みサポート: OpenAPI スキーマをコード内で直接使用しました。

API スターの長所と短所

長所

  • 強い型付け: 型の注釈を強調しました。

短所

  • 非推奨: メンテナンスは行われなくなりました。新しいプロジェクトには推奨されません。

Python API フレームワークを選択するには?

OpenAPI/Swagger をサポートするフレームワークを選択する場合は、次の点を考慮してください。

  • プロジェクトの要件: プロジェクトのサイズと複雑さ。そうかも知れません ニッチなフレームワークの開発者を見つけるのは難しく、新しいパラダイム/コンセプトについて既存のチームメイトをトレーニングするのは困難です。
  • コミュニティとサポート: 大規模なコミュニティを持つフレームワークには、 さらに多くのリソース。
  • パフォーマンスのニーズ: 高いパフォーマンスが重要な場合は、非同期を検討してください。 FastAPI や Sanic などのフレームワーク。
  • 開発スタイル: コードファーストまたは API ファースト/仕様ファーストのどちらを好むか 開発。

最高の Python API フレームワークは何ですか?

FastAPI は、組み込みの OpenAPI サポート、高いパフォーマンス、活発なコミュニティ、最新の機能で際立っています。 Django REST Framework は、すでに Django を使用していて、堅牢で機能豊富な API フレームワークが必要な場合に最適です。 Flask は柔軟性とシンプルさを提供しますが、OpenAPI サポートのための拡張機能が必要です。そのため、新しいプロジェクトにはお勧めしません。

最速の Python API フレームワークとは何ですか?

2024 年 11 月の時点で、Robyn は最速のフレームワークであると主張しています:

Top Python API Frameworks with OpenAPI Support

Python API の基本 - これらを忘れないでください。

どの Python API フレームワークを選択するかに関係なく、本番環境に進む前に API の 3 つの柱が必要になります。

  1. 認証 (例: API キー認証)
  2. ドキュメント (例: API リファレンス、認証、 請求、分析、コードサンプルなど)
  3. 保護 (例: レート制限とクォータ)

Zuplo はこれらすべてを無料で処理します。無料で始めることも、チームと一緒に時間をとって Zuplo の動作を確認することもできます。

よくある質問

WSGIとは何ですか?

WSGI は Web サーバー ゲートウェイ インターフェイスの略です。これは、Web サーバーと Python Web アプリケーションまたはフレームワーク間の標準インターフェイスを定義する仕様です。 WSGI を使用すると、開発者は WSGI 準拠の Web サーバー上で実行できるポータブル Web アプリケーションを作成でき、Python Web エコシステムの相互運用性と柔軟性が促進されます。

ASGIとは何ですか?

ASGI は、Asynchronous Server Gateway Interface の略です。これは、非同期 Python Web サーバー、フレームワーク、アプリケーション間の標準インターフェイスを定義する仕様です。 ASGI は、WebSocket などの HTTP を超えた非同期のイベント駆動型アプリケーションとプロトコルをサポートするために、WSGI (Web Server Gateway Interface) の後継として開発されました。

WSGIとASGIの違いは何ですか

|特集 | WSGI | ASGI | | --------------- | ------------------------------------- | -------------------------------------------------- ------ | |同時実行性 |同期 (一度に 1 つのリクエスト) |非同期 (複数の接続を同時に処理) | |プロトコル | HTTP/1.1 のみ | HTTP/1.1、HTTP/2、WebSocket など | |使用例 |従来の Web アプリケーション |リアルタイム アプリ、長時間接続、非同期サービス | | Python のバージョン |古い Python バージョンとの互換性 |非同期機能には Python 3.5 が必要です |

Python API をどこでホストすればよいですか?

Python API をホストするには、次のような多くのオプションがあります

  • PythonAnywhere や Render などのサービスとしてのプラットフォーム (PaaS) プロバイダー
  • サービスとしてのインフラストラクチャー (IaaS)、別名 AWS EC2、Azure VM、GCP などのビッグクラウド Compute Engine
  • DigitalOCean や Linode などの仮想プライベート サーバー (VPS)
  • Google Kubernetes Engine を使用したコンテナ (Docker Kubernetes)
  • AWS Lambda や Google Cloud Functions などのサーバーレス プラットフォーム

Python API に最適な API ゲートウェイは何ですか?

Zuplo のエッジ API ゲートウェイは、優れたキャッシュ パフォーマンス、git を使用した直感的な開発者エクスペリエンス、および完全な OpenAPI サポートを提供します。これにより、ほとんどの Python API フレームワーク、特に OpenAPI をサポートするフレームワークにとって、これが自然な選択になります。

Python API を文書化する最良の方法は何ですか?

多くの Python フレームワーク (FastAPI、Litestar など) には OpenAPI のサポートが組み込まれており、ほとんどの API ドキュメント プラットフォーム (Zudoku など) はそのままサポートしています。完全な API ドキュメント エクスペリエンスについては、Zuplo の開発者ポータルを検討してください。このポータルには、ドキュメント、組み込み認証、セルフサービス課金、使用状況分析が備わっています。

Python API を収益化する最善の方法は何ですか?

収益化を設定する最も速くて最も手頃な方法は、Stripe などの支払いプラットフォームと直接統合される Zuplo の API 収益化機能を使用することです。プランの作成、ユーザーのサインアップ、API キーの発行、サブスクリプションの制御、クォータの強制を簡単に行うことができます。

以上がOpenAPI をサポートするトップ Python API フレームワークの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート