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"}
/.get.@app.get("/")).@app.get("/")
async def root():
return {"message": "Hello World"}
All the data validation is performed under the hood by Pydantic
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"이 대입된다.
enum - Support for enumerations - Python 3.10.7 documentation