【FastAPI】Pythonを使って爆速でローカル環境にAPIサーバーを構築する

Python

概要

  • 言語はPython
  • PythonパッケージのFastAPIを使用

ソースコード

  • http://localhost:8000に対して、POST,GETすることでデータを送信・取得することができます。
from fastapi import FastAPI
import csv
app = FastAPI()

# 爆速でローカル環境にAPIサーバーを構築する。


@app.post("/")
def post_root(data):
    with open('./data/data.csv','w',newline='') as f:
        writer = csv.writer(f)
        writer.writerow(data.split(","))

    return {"PostData": data}


@app.get("/")
def read_root():
    with open('./data/data.csv','r') as f:
        reader = csv.reader(f)
        data_list = [row for row in reader]
    return {"GetData": data_list}



importするパッケージ

  • パッケージとしては、FastAPIuvicornが必要です。
anyio==3.5.0
asgiref==3.5.1
click==8.1.3
colorama==0.4.4
fastapi==0.75.2
h11==0.13.0
idna==3.3
pydantic==1.9.0
sniffio==1.2.0
starlette==0.17.1
typing-extensions==4.2.0
uvicorn==0.17.6
  • fastapiとcsvをインポートします。
    • csvはデータをcsvで保存するためにインポートしているので、保存するものによって適宜変更してください。
from fastapi import FastAPI
import csv
app = FastAPI()
  • postメソッドで動作する部分の関数です。
@app.post("/")
def post_root(data):
    # dataフォルダにPOSTされたdataをcsvとして保存しています。
    with open('./data/data.csv','w',newline='') as f:
        writer = csv.writer(f)
        writer.writerow(data.split(","))
  
  #返り値としては、POSTしたデータをそのまま返しています。
    return {"PostData": data}
  • GETメソッドで動作する部分の関数です。
@app.get("/")
def read_root():
    # dataフォルダにあるCSVを読み込んでlistにします。
    with open('./data/data.csv','r') as f:
        reader = csv.reader(f)
        data_list = [row for row in reader]
    # listにしたcsvデータを返り値にしています。
    return {"GetData": data_list}
  • デコレータ(@app.postみたいなやつ)については、下記を参照

FastAPIの起動

  • 上記のソースコードがあるフォルダ内で、下記のコマンドを実行(コマンドプロンプトもしくはターミナルで実行)

uvicorn main:app –reload

  • 実行するとターミナル上で下記のようにAPIサーバーが立ち上がる
  • APIサーバーが立ち上がった状態で、下記のURLにアクセスするとAPIのテスト等が行えるページにアクセスできる。
http://localhost:8000/docs
  • アクセスすると、下記のようなページが表示される。
    • try it outボタンで、各メソッド(POST,GET)をテストすることができる。

まとめ

  • FastAPIでローカル環境にAPIサーバーを構築した。
  • めっちゃ簡単!

動画

コメント

タイトルとURLをコピーしました