First Steps

설치

pip install fastapi[all]

실행

uvicorn main:app --reload

[main.py]

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

path operation function

@app.get("/")
async def root():
    return {"message": "Hello World"}

Path Parameters

All the data validation is performed under the hood by Pydantic

Predifined values

from enum import Enum

from fastapi import FastAPI

class ModelName(str, Enum):
    alexnet = "alexnet1"
    resnet = "resnet1"
    lenet = "lenet1"

app = FastAPI()

@app.get("/models/{model_name}")
async def get_model(model_name: ModelName):
    if model_name is ModelName.alexnet:
        return {"model_name": model_name, "message": "Deep Learning FTW!"}

    if model_name == "resnet1":  # model_name == ModelName.resnet.value
            return {"model_name": model_name, "message": "RESNET"}

    if model_name.value == "lenet1":
        return {"model_name": model_name, "message": "LeCNN all the images"}

    return {"model_name": model_name, "message": "Have some residuals"}

ModelName type의 function parameter의 실제 값은 Enum의 value 값이다. 따라서 if model_name == "resnet1"처럼 string과 비교하는 조건문을 쓰고, return의 model_name에도 string "resnet"이 대입된다.

Python Enum

enum - Support for enumerations - Python 3.10.7 documentation