|
|
|
@ -36,7 +36,7 @@ Django REST Framework は Tom Christie によって作成されました。Starl |
|
|
|
|
|
|
|
/// |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
自動でAPIドキュメントを生成するWebユーザーインターフェースを持っている点。 |
|
|
|
|
|
|
|
@ -56,7 +56,7 @@ Flask は「マイクロフレームワーク」であり、データベース |
|
|
|
|
|
|
|
Flaskのシンプルさを考えると、APIを構築するのに適しているように思えました。次に見つけるべきは、Flask 用の「Django REST Framework」でした。 |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
マイクロフレームワークであること。ツールやパーツを目的に合うように簡単に組み合わせられる点。 |
|
|
|
|
|
|
|
@ -98,7 +98,7 @@ def read_url(): |
|
|
|
|
|
|
|
`requests.get(...)` と`@app.get(...)` には類似点が見受けられます。 |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
* シンプルで直感的なAPIを持っている点。 |
|
|
|
* HTTPメソッド名を直接利用し、単純で直感的である。 |
|
|
|
@ -118,7 +118,7 @@ def read_url(): |
|
|
|
|
|
|
|
そのため、バージョン2.0では「Swagger」、バージョン3以上では「OpenAPI」と表記するのが一般的です。 |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
独自のスキーマの代わりに、API仕様のオープンな標準を採用しました。 |
|
|
|
|
|
|
|
@ -147,7 +147,7 @@ APIが必要とするもう一つの大きな機能はデータのバリデー |
|
|
|
|
|
|
|
しかし、それはPythonの型ヒントが存在する前に作られたものです。そのため、すべての<dfn title="データがどのように構成されるべきかの定義">スキーマ</dfn>を定義するためには、Marshmallowが提供する特定のユーティリティやクラスを使用する必要があります。 |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
コードで「スキーマ」を定義し、データの型やバリデーションを自動で提供する点。 |
|
|
|
|
|
|
|
@ -169,7 +169,7 @@ Webargsは、Marshmallowと同じ開発者により作られました。 |
|
|
|
|
|
|
|
/// |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
受信したデータに対する自動的なバリデーションを持っている点。 |
|
|
|
|
|
|
|
@ -199,7 +199,7 @@ APISpecは、Marshmallowと同じ開発者により作成されました。 |
|
|
|
|
|
|
|
/// |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
OpenAPIという、APIについてのオープンな標準をサポートしている点。 |
|
|
|
|
|
|
|
@ -231,7 +231,7 @@ Flask-apispecはMarshmallowと同じ開発者により作成されました。 |
|
|
|
|
|
|
|
/// |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
シリアライゼーションとバリデーションを定義したコードから、OpenAPIスキーマを自動的に生成する点。 |
|
|
|
|
|
|
|
@ -251,7 +251,7 @@ Angular 2にインスピレーションを受けた、統合された依存性 |
|
|
|
|
|
|
|
入れ子になったモデルをうまく扱えません。そのため、リクエストのJSONボディが内部フィールドを持つJSONオブジェクトで、それが順番にネストされたJSONオブジェクトになっている場合、適切にドキュメント化やバリデーションをすることができません。 |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
素晴らしいエディターの補助を得るために、Pythonの型ヒントを利用している点。 |
|
|
|
|
|
|
|
@ -271,7 +271,7 @@ Pythonの`asyncio`ループの代わりに、[`uvloop`](https://github.com/Magic |
|
|
|
|
|
|
|
/// |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
物凄い性能を出す方法を見つけた点。 |
|
|
|
|
|
|
|
@ -287,7 +287,7 @@ Falconはもう一つの高性能Pythonフレームワークで、ミニマム |
|
|
|
|
|
|
|
そのため、データのバリデーション、シリアライゼーション、ドキュメント化は、自動的にできずコードの中で行わなければなりません。あるいは、HugのようにFalconの上にフレームワークとして実装されなければなりません。このような分断は、パラメータとして1つのリクエストオブジェクトと1つのレスポンスオブジェクトを持つというFalconのデザインにインスピレーションを受けた他のフレームワークでも起こります。 |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
素晴らしい性能を得るための方法を見つけた点。 |
|
|
|
|
|
|
|
@ -313,7 +313,7 @@ Pydanticのようなデータのバリデーション、シリアライゼーシ |
|
|
|
|
|
|
|
ルーティングは一つの場所で宣言され、他の場所で宣言された関数を使用します (エンドポイントを扱う関数のすぐ上に配置できるデコレータを使用するのではなく) 。これはFlask (やStarlette) よりも、Djangoに近いです。これは、比較的緊密に結合されているものをコードの中で分離しています。 |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
モデルの属性の「デフォルト」値を使用したデータ型の追加バリデーションを定義します。これはエディタの補助を改善するもので、以前はPydanticでは利用できませんでした。 |
|
|
|
|
|
|
|
@ -341,7 +341,7 @@ HugはTimothy Crosleyにより作成されました。彼は[`isort`](https://gi |
|
|
|
|
|
|
|
/// |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
HugはAPIStarに部分的なインスピレーションを与えており、私が発見した中ではAPIStarと同様に最も期待の持てるツールの一つでした。 |
|
|
|
|
|
|
|
@ -385,7 +385,7 @@ APIStarはTom Christieにより開発されました。以下の開発者でも |
|
|
|
|
|
|
|
/// |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**へ与えたインスピレーション |
|
|
|
|
|
|
|
存在そのもの。 |
|
|
|
|
|
|
|
@ -409,7 +409,7 @@ Pydanticは、Pythonの型ヒントを元にデータのバリデーション、 |
|
|
|
|
|
|
|
Marshmallowに匹敵しますが、ベンチマークではMarshmallowよりも高速です。また、Pythonの型ヒントを元にしているので、エディタの補助が素晴らしいです。 |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**での使用用途 |
|
|
|
|
|
|
|
データのバリデーション、データのシリアライゼーション、自動的なモデルの (JSON Schemaに基づいた) ドキュメント化の全てを扱えます。 |
|
|
|
|
|
|
|
@ -452,7 +452,7 @@ ASGIはDjangoのコアチームメンバーにより開発された新しい「 |
|
|
|
|
|
|
|
/// |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**での使用用途 |
|
|
|
|
|
|
|
webに関するコアな部分を全て扱います。その上に機能を追加します。 |
|
|
|
|
|
|
|
@ -470,7 +470,7 @@ Uvicornは非常に高速なASGIサーバーで、uvloopとhttptoolsにより構 |
|
|
|
|
|
|
|
Starletteや**FastAPI**のサーバーとして推奨されています。 |
|
|
|
|
|
|
|
/// tip | 豆知識 |
|
|
|
/// tip | **FastAPI**が推奨する理由 |
|
|
|
|
|
|
|
**FastAPI**アプリケーションを実行するメインのウェブサーバーである点。 |
|
|
|
|
|
|
|
|