https://shimi-dai.com/fastapi-merit-demerit/
シェアしました。
2022
1/15
バックエンド
プログラム言語
2022年1月15日
2022年1月15日
FastAPI は、PythonのでAPI を構築するためのモダンで高速(高パフォーマンス)なWebフレームワークです。
DjangoやFlaskよりも格段に高速で、GolangのGinと同等の速度を出すことができます。
またFlaskと同じような書き方のためFlaskを使用している企業や理解できる人は容易に導入することができます。
FastAPIのメリット
FastAPIのメリットは以下があります。
・他のPythonのWebフレームワークより高速
・開発が比較的に容易
・型付けを行うためバグが少なく開発可能
・公式ドキュメントに日本語
・APIのdocumente generatorが機能がある
では詳細を紹介していきたいと思います。
他のPythonのWebフレームワークより高速
FastAPIはDjango、Flask、Bottleと比較しても圧倒的に高速です。以下の図では数値が高いほど高速という図になリます。
参考URL:Why did we choose FAST API over Flask and Django for our RESTFUL Micro-services
上の図を見るとFastAPIの速度が速いのがわかります。Pythonは使いやすいです言語ですが遅いと言われます。
開発が比較的に容易
FastAPIはFlaskに似たコーディングができ、シンプルにコーディングできます。Flaskを扱える人は容易に利用することができます。
以下が最もシンプルなAPIの内容です。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
次にFlaskのWebアプリです。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
対照的にDjangoでのHelloWorldはいくつかものファイルを修正する必要があります。この記事では割愛しますがそれぞれのWebフレームワークでHello World記事は以下になります。
PythonのWebフレームワーク
FastAPIでHello World。Pythonの爆速Webフレームワークを試してみよう!
DjangoでHello Worldの初めてのWeb画面を実装しよう!
[Python] FlaskでHello Worldを表示するアプリをLinuxサーバ上で実装する方法 [初心者でもOK]
型付けを行うためバグが少なく開発可能
pydanticというバリデーターを使うことで返す時のデータ、データベースにデータ作成、アップデートするときのエラーを少なくすることができます。
公式ドキュメントに日本語
公式ドキュメントに日本語があります。
他のフレームワークを使いたかった時に日本語の説明がなくて難しいと感じたことはあると思います。
FastAPIの日本語マニュアル
FastAPIの日本語マニュアル
APIのdocument generatorが機能がある
FastAPIではデフォルトでAPIのドキュメント自動生成機能のdocument generator機能があります。document generatorは Swagger-UIで提供されており簡単にAPI利用をすることができます。
FastAPのdocument generator
FastAPのdocument generator
FastAPIのデメリット
FastAPIのデメリットは以下があります。
・デフォルトだと機能が少ないのでライブラリを選択する必要がある
・コミュニティーが小さいためナレッジが少ない
では詳細を紹介していきたいと思います。
デフォルトだと機能が少ないのでライブラリを選択する必要がある
FastAPIのとにかく軽量なフレームワークであるためDB接続や認証などの機能は別に容易する必要があります。
ただしDB接続にはSQLAlchemyや認証機能にはpython-joseと公式マニュアルにきちんと記載されておりますので利用することは可能です。
コミュニティーが小さいためナレッジが少ない
FastAPIは2018年にできたばかりのフレームワークなのでコミュニティー規模が小さいことが一番のデメリットです。
ドキュメントやナレッジが少ないことから自身で検証する必要があり、開発に大きく
コミュニティー層が小さいです
0 コメント:
コメントを投稿