FireAPIを採用する5つの理由
3186 ワード
我々の機械学習モデルを展開する一般的な方法は、残りのWebサービスAPIを通してそれらを公開しています.そして、我々の焦点がウェブツールを作成していないので、我々は市場に我々の時間を短くするために、よくテストされた、準備ができているフレームワークを採用するのを好みます.
フレームワークを選択するとき、我々はパフォーマンスと生産性の間の適切なバランスを取得したい.通常、ツールがより具体的で、裸の金属により近いので、それはよりよく実行します.しかし、低レベルのライブラリは私たちにほとんどの仕事を残す.一方、フレームワークがあまりに抽象化を提供するなら、それはパフォーマンスを低下させるかもしれません.畝
このAPIでは、我々のREST APIのフレームワークとしてFastAPIを採用する理由と、パフォーマンスと生産性の間の優れたバランスを提供する理由について簡単に説明します.畝
ハイパフォーマンス
FastAPIは利用できる最も速いPythonフレームワークのうちの1つです、そして、TechemPowerベンチマークに従って、そのパフォーマンスはNodeJSとGoフレームワークに匹敵します.
宣言的ルーティング
を作成するルートと終点FastAPIを使用して非常に簡単です.デコレータをメソッドのまわりに含んでいます、そして、それはデコレータ引数で指定された経路に役立つでしょう
@ app.ポスト(「糖尿病:予測」)
DEF予測( P ):
返り値
パスパラメータを受け取るには、パステンプレートのパスパラメータの名前を宣言し、メソッド名を同じ名前で宣言します
@ app.を取得します
デフゲッチー患者
パス
メソッドシグネチャで宣言された他のパラメーターは、クエリパラメーターとして扱われます.メソッドが型指定されたパラメーターを持つ場合、FastAPIはクエリ文字列パラメーターを右の型に自動的に変換します.以下の例では、エンドポイントは"size "と"page "というパラメータをサポートしており、フレームワークが自動的にクエリパラメータを正しい型に変換します.
@ app.取得する
def gethash患者(ページ: int , size : int ):
パス
FastAPIを使用すると、ルートポイントとそのパラメーターをエンドポイントのサーバーに近いメソッドで宣言します.また、メソッドパラメータに直接ルートパラメータを受け取るので、ジェネリックデータ構造を検査してパラメータを検証し、生産性の増加を表す必要はありません.
自動シリアル化と逆シリアル化
FastAPIはリクエストの本体を自動的にメソッドパラメータに逆シリアル化します.リクエスト本文をオブジェクトとして受け取るには、Pydticモデルクラスを作成し、このモデルをパラメーターの型として宣言する必要があります.例えば、
pydantic輸入basemodelから
クラス患者( basemodel ):
名前: str
アドレスは
@ app.ポスト(「患者」)
患者の患者(患者:患者):
パス
一方、オブジェクトを返すだけでJSON形式に自動的にシリアル化することも可能です.例えば、
@ app.を取得します
DEF SAVERANGE患者(患者単位)
帰りの患者(「ジョンスミス」、『99のNowhere通り』)
したがって、FastAPIでは、ビジネスコードのシリアル化と逆シリアル化の取り扱いについて心配する必要はありません.畝
宣言検証
宣言的ルーティングをしているので、論理を書き込む代わりに受け入れられた値を宣言することで、パラメータを検証します.自動検証を得る最初の選択肢は、メソッドシグネチャのパラメーターの型を宣言することです.次の例では、パラメータページとsizeに整数でない引数を渡すと、クライアントエラーが発生します.
@ app.取得する
def gethash患者(ページ: int , size : int ):
パス
しかし、パラメータの型を検証するだけで十分ではありません.また、受け入れられた範囲を検証する必要があります.以前は、ページとサイズに対して負の値またはゼロを持つことは意味をなさない.それで、我々のメソッドを肯定的な数字だけを受け入れるように変更することができます:
@ app.取得する
デフゲッチー患者
ページ: int = query (..., gt = 0 ),
サイズ: int = query (..., gt = 0 ):
パス
また、モデルのバリデータを設定できます.たとえば、患者モデルのフィールド名が文字を受け入れるだけで、最大文字数が50文字であることを確認できます.
クラス患者( basemodel ):
名前: str = field ( regex =' [ a - za - z\s ]*', MaxCount length = 50 )
アドレスは
宣言検証を使用すると、我々のパラメータをテストするロジックを書く必要がないので、アプリケーション内のコードの量を大幅に削減します.そして、より簡単かつ迅速に検証を書くことができるので、APIの品質とセキュリティを大幅に高める.
自動ドキュメント生成
良いドキュメントは素晴らしいAPIの重要な部分です.しかし、ほとんどの開発者は退屈な仕事です、そして、多くの場合、彼らはまったくドキュメンテーションを書きません.ドキュメントを書くのを楽しむ人々のためにさえ、ドキュメンテーションページを書くことは時間がかかります.
FastAPIを使用すると、我々は重要な追加努力なしでAPIのための優れたドキュメントがあります.FastAPIはAPIのために自動的にOpenAPI(Swagger)のドキュメントページを生成し、それが私たちのアプリケーションの/docのパスの下で利用可能になるためです.FastAPIによって生成されたドキュメントには以下が含まれます. API の終点要求パラメータと応答 返されたコード 要求と応答で使用される実体のスキーマ API をテストするインターフェイス
ドキュメントページをビルドするために使用するすべての情報は、私たちのコードから来ます.追加のファイルを書くか、余分なコマンドを実行する必要はありません.あなたは、アプリケーションのサービスを開始し、ドキュメントがあります.
結論
FastAPIは、パフォーマンスと生産性の間に優れたバランスを提供する素晴らしいフレームワークです.シリアル化とドキュメント化のような自動機能と組み合わせて、ルートとバリデータの宣言的な性質は、我々が我々のモデルとビジネスゴールに集中することができるように、我々がより少ないコードで高品質APIを書くのを許します.
FastAPIの詳細については、サイトを参照してください.
https://fastapi.tiangolo.com/
フレームワークを選択するとき、我々はパフォーマンスと生産性の間の適切なバランスを取得したい.通常、ツールがより具体的で、裸の金属により近いので、それはよりよく実行します.しかし、低レベルのライブラリは私たちにほとんどの仕事を残す.一方、フレームワークがあまりに抽象化を提供するなら、それはパフォーマンスを低下させるかもしれません.畝
このAPIでは、我々のREST APIのフレームワークとしてFastAPIを採用する理由と、パフォーマンスと生産性の間の優れたバランスを提供する理由について簡単に説明します.畝
ハイパフォーマンス
FastAPIは利用できる最も速いPythonフレームワークのうちの1つです、そして、TechemPowerベンチマークに従って、そのパフォーマンスはNodeJSとGoフレームワークに匹敵します.
宣言的ルーティング
を作成するルートと終点FastAPIを使用して非常に簡単です.デコレータをメソッドのまわりに含んでいます、そして、それはデコレータ引数で指定された経路に役立つでしょう
@ app.ポスト(「糖尿病:予測」)
DEF予測( P ):
返り値
パスパラメータを受け取るには、パステンプレートのパスパラメータの名前を宣言し、メソッド名を同じ名前で宣言します
@ app.を取得します
デフゲッチー患者
パス
メソッドシグネチャで宣言された他のパラメーターは、クエリパラメーターとして扱われます.メソッドが型指定されたパラメーターを持つ場合、FastAPIはクエリ文字列パラメーターを右の型に自動的に変換します.以下の例では、エンドポイントは"size "と"page "というパラメータをサポートしており、フレームワークが自動的にクエリパラメータを正しい型に変換します.
@ app.取得する
def gethash患者(ページ: int , size : int ):
パス
FastAPIを使用すると、ルートポイントとそのパラメーターをエンドポイントのサーバーに近いメソッドで宣言します.また、メソッドパラメータに直接ルートパラメータを受け取るので、ジェネリックデータ構造を検査してパラメータを検証し、生産性の増加を表す必要はありません.
自動シリアル化と逆シリアル化
FastAPIはリクエストの本体を自動的にメソッドパラメータに逆シリアル化します.リクエスト本文をオブジェクトとして受け取るには、Pydticモデルクラスを作成し、このモデルをパラメーターの型として宣言する必要があります.例えば、
pydantic輸入basemodelから
クラス患者( basemodel ):
名前: str
アドレスは
@ app.ポスト(「患者」)
患者の患者(患者:患者):
パス
一方、オブジェクトを返すだけでJSON形式に自動的にシリアル化することも可能です.例えば、
@ app.を取得します
DEF SAVERANGE患者(患者単位)
帰りの患者(「ジョンスミス」、『99のNowhere通り』)
したがって、FastAPIでは、ビジネスコードのシリアル化と逆シリアル化の取り扱いについて心配する必要はありません.畝
宣言検証
宣言的ルーティングをしているので、論理を書き込む代わりに受け入れられた値を宣言することで、パラメータを検証します.自動検証を得る最初の選択肢は、メソッドシグネチャのパラメーターの型を宣言することです.次の例では、パラメータページとsizeに整数でない引数を渡すと、クライアントエラーが発生します.
@ app.取得する
def gethash患者(ページ: int , size : int ):
パス
しかし、パラメータの型を検証するだけで十分ではありません.また、受け入れられた範囲を検証する必要があります.以前は、ページとサイズに対して負の値またはゼロを持つことは意味をなさない.それで、我々のメソッドを肯定的な数字だけを受け入れるように変更することができます:
@ app.取得する
デフゲッチー患者
ページ: int = query (..., gt = 0 ),
サイズ: int = query (..., gt = 0 ):
パス
また、モデルのバリデータを設定できます.たとえば、患者モデルのフィールド名が文字を受け入れるだけで、最大文字数が50文字であることを確認できます.
クラス患者( basemodel ):
名前: str = field ( regex =' [ a - za - z\s ]*', MaxCount length = 50 )
アドレスは
宣言検証を使用すると、我々のパラメータをテストするロジックを書く必要がないので、アプリケーション内のコードの量を大幅に削減します.そして、より簡単かつ迅速に検証を書くことができるので、APIの品質とセキュリティを大幅に高める.
自動ドキュメント生成
良いドキュメントは素晴らしいAPIの重要な部分です.しかし、ほとんどの開発者は退屈な仕事です、そして、多くの場合、彼らはまったくドキュメンテーションを書きません.ドキュメントを書くのを楽しむ人々のためにさえ、ドキュメンテーションページを書くことは時間がかかります.
FastAPIを使用すると、我々は重要な追加努力なしでAPIのための優れたドキュメントがあります.FastAPIはAPIのために自動的にOpenAPI(Swagger)のドキュメントページを生成し、それが私たちのアプリケーションの/docのパスの下で利用可能になるためです.FastAPIによって生成されたドキュメントには以下が含まれます.
ドキュメントページをビルドするために使用するすべての情報は、私たちのコードから来ます.追加のファイルを書くか、余分なコマンドを実行する必要はありません.あなたは、アプリケーションのサービスを開始し、ドキュメントがあります.
結論
FastAPIは、パフォーマンスと生産性の間に優れたバランスを提供する素晴らしいフレームワークです.シリアル化とドキュメント化のような自動機能と組み合わせて、ルートとバリデータの宣言的な性質は、我々が我々のモデルとビジネスゴールに集中することができるように、我々がより少ないコードで高品質APIを書くのを許します.
FastAPIの詳細については、サイトを参照してください.
https://fastapi.tiangolo.com/
Reference
この問題について(FireAPIを採用する5つの理由), 我々は、より多くの情報をここで見つけました https://dev.to/rodolfomendes/5-reasons-to-adopt-fastapi-to-build-rest-web-services-ki5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol