from fastapi import FastAPI
app = FastAPI()
@app.get("/users")
def get_user(limit: int):
return {"limit": limit}
- 여기서 유의할점은 ?으로 매개변수에 전달한다는 것이다.
- 그런데 매개변수로 안주면 에러가난다.
from fastapi import FastAPI
app = FastAPI()
@app.get("/users")
def get_user(limit: int = None):
return {"limit": limit}
- 이런 것을 변수(limit)을 Optional하게 한다고 한다.
- 이러면 ? 없어도 limit이 null로 잘 전달된다.
from typing import Optional
from fastapi import FastAPI
app = FastAPI()
@app.get("/users")
def get_user(limit: Optional[int] = None):
return {"limit": limit}
- 보통 사용하지 않아도 정상 작동되지만 Optional을 통해 확실히 표시해주는 것이 좋다.
- FastAPI는 경로에 매개변수가 없으면 쿼리 매개변수로 함수 매개변수를 받는다.
- 그리고 bool 형 자료형에 대해서는 on, yes, True, true 모두 1로 인식하여 잘 처리한다.
from typing import Optional
from enum import Enum
from fastapi import FastAPI
app = FastAPI()
class UserLevel(str, Enum):
a = "a"
b = "b"
c = "c"
@app.get("/users")
def get_user(grade: UserLevel):
return {"grade": grade}
- 이런식으로 UserLevel의 Type도 지정할 수 있는데 Enum과 str을 이용한다. (다중 상속)
- 다만, 이 경우에는 a, b, c 밖에 안된다.
- d에서는 에러가 나는 것을 확인했다.
- 이런거는 docs에서 더 명확하게 이해할 수 있으니 접속해보는 것이 좋다.
- 해당의 경우에도 기본 값으로 UserLvel.a 등을 주면 Optional이 가능해진다.