경로 변수와 쿼리 파라미터
함수 파라미터로 받을 수 있다.
async def read_item(skip: int = 0, limit: int = 2) -> str :
Request Body받기
pydantic Model로 선언된 객체를 함수 인자에 매핑시킬 수 있다.
이때 매핑시키기 위해선 타입을 명시해줘야 한다.
Class Item(BaseModel):
name: str
price: ploat
@app.post("/items/")
async def create_item(item: Item):
return
pydantic Model을 작성할때 필드를 옵셔널하게 만들기 위해선 다음의 두 가지 선택지가 있다.
Optional
는typing
모듈에서 임포트한다.class Item(BaseModle): name: str description1 str | None = None description2 Optional[str] = None
이때 pydantic의 model_dump()
메서드를 이용한다. fastapi가 pydantic model 객체로 받은 인자를 파이썬 딕셔너리 타입으로 변환시켜준다.
@app.post("/items_txt/")
async def create_item_tax(item: Item):
item_dict = item.model_dump()
이를 통해 해당 딕셔너리에 새로운 키 값을 추가하는 등의 추가 작업이 파이썬 코드로 가능해진다.
💡딕셔너리의
None
값은 응답을 위해 Json으로 변경되면null
값으로 변경된다.
💡딕셔너리를 언패킹하는 문법
**
과 함께 사용하면 더 편리하게 사용가능
result = {**item.model_dump()}
이러면 item객체 내부까지 전부 언패킹해서 키-밸류로 result객체에 저장하게 된다.
이때는 FastAPI에서 Form()으로 처리함. Form내의 개별 input값들은 input의 name
속성과 일치하는 변수로 함수 인자에서 받아서 사용할 수 있다.