カテゴリー
アーカイブ

05.17
2022

FastAPIを使ってみる

  • LINE

はじめに

先日、Django Rest frameworkを使ってAPIを作成するというブログを公開しましたが、色々調べてみると

PythonにはFastAPIという簡単に高速にAPIを作成するためのフレームワークが用意されていることを知りました。

調べてみると面白そうだったので、今回はFastAPIを使って、簡単なAPIを作成してみようと思います!

FastAPIにはチュートリアルがあるので、そちらを行ってみようと思います!

公式チュートリアル

目次

  1. 環境について
  2. FastAPIとは
  3. FastAPIでAPIを作成する
  4. FastAPIを学習した感想

 

環境

  • OS: macOS BigSur 11.2.3
  • Python: 3.8.2
  • fastapi: 0.78.0
  • uvicorn: 0.17.6

FastAPIとは

FastAPIはPython3.6以降でAPI構築するための高速(高パフォーマンス)なWebフレームワークです。

FastAPIの特徴として以下が挙げられます。

  • 自動的にSwaggerUIのドキュメントが生成される
  • 高速(NodeJSやGoのように早い)
  • コードをより簡単に、より早く書ける
  • 型安全な開発ができる

FastAPIは2018年にリリースされたフレームワークにも関わらず、Githubのスター数は以下のようになっていました。(2022年5月現在)

  1. Django : 6,4100
  2. Flask : 5,9000
  3. FastAPI : 4,5200

※ スター数は こちら から検索できます

Djangoは2005年、Flaskは2010年にリリースされているので、FastAPIがいかにすごいスピードで広まっているかがわかりますね。

最近では、SPAでバックエンドはAPIを作成するだけみたいなのがトレンドとしてあるようなのでこれからもっとFastAPIの勢いがあがるかも知れませんね。

FastAPIでAPIを作成する

まず適当なフォルダを作成し、その中にPythonの仮想環境を作成します。

~$ mkdir fastapi (fastapiフォルダを作成する)
~$ cd fastapi (fastapiフォルダに移動)
fastapi $ python3 -m venv fastapi_venv

次に仮想環境をアクティブにします。

fastapi $ . fastapi_venv/bin/activate

次に必要なパッケージをインストールします。

$ pip install fastapi uvicorn

これで必要なパッケージは以上です。

次にmainファイルを作成していきます。

main.py

from fastapi import FastAPI

# FastAPIのインスタンスを作成
app = FastAPI()

@app.get("/")
def root():
    return {"message": "HelloWorld"}

必要な記述はこれだけです。

@app.get("/")はFastAPIでパスオペレーションデコレータというようで他にも

  • @app.post("")
  • @app.put("")
  • @app.delete("")

などいったものがあるようです。

次にサーバーを起動します。

$ uvicorn main:app --reload

これで起動できます。

ブラウザで http://127.0.0.1:8000 にアクセスしてみましょう

JSONレスポンスが表示されました。

次に、http://127.0.0.1:8000/docs にアクセスします。

こちらがFastAPI側によって自動的に生成されるSwaggerUIを用いたドキュメントになります。

このようにFastAPIでは簡単にWebAPIを作成することができます。

FastAPIを学習した感想

今回は、FastAPIを使って簡単なAPIを作成しましたが、

近いうちにデータベースとも繋げてCRUD処理ができるようなものも作成してします!

最後まで見ていただきありがとうございました!