해결된 질문
작성
·
278
·
수정됨
0
안녕하세요, 강의 잘 듣고 있습니다.
Fast API에서 api handler 매개변수로
url path parameter
url query parameter
request body
이렇게 3가지가 올 수 있는 것 같은데, 내부적으로 파이썬 **kwargs를 사용해서 순서에 상관없이 매개변수 이름을 통해서 구분을 하는걸까요?
사실 공식문서를 통해서 직접 찾아서 공부하면 베스트인데, 질문을 통해서 전문가한테 빠르게 배워서 정리하는 것도 좋은 방법같아서 괜찮으시면 관련 내용을 정리해주실 수 있을까요? 특히 강의에서 Pydantic BaseModel을 상속한 클래스를 타입힌트로 하면 내부적으로 request body 매개변수로 알아서 처리하는 건지, 또 Body를 통해서 request body의 인자를 받던데 ...이랑 embed=True의 의미 등 이런 부분들도 강의에서 설명이 따로 없어서 정리해주시면 도움이 될 것 같습니다.
감사합니다.
답변 1
0
안녕하세요. 해당 부분에 대한 설명이 부족했네요.
api handler 함수에 전달된 매개변수들은 다음과 같은 기준으로 FastAPI에 의해 처리됩니다.
Path parameter
path parameter는 path에 사용된 것과 동일한 이름의 매개변수를 전달하는 경우, path parameter로 처리됩니다.
@router.get("/{todo_id}", status_code=200)
def get_todo_handler(todo_id: int):
pass
Request body
Pydantic의 BaseModel을 상속받아 생성한 클래스를 type hints로 지정해주는 경우에는 request body로 처리됩니다.
@router.post("", status_code=201)
def create_todo_handler(request: CreateToDoRequest):
pass
그런데 request body로 전달 받는 인자가 하나인 경우에는 굳이 별도의 class를 생성할 필요가 없기 때문에 아래와 같은 syntactic sugar를 이용할 수 있습니다.
@router.patch("/{todo_id}", status_code=200)
def update_todo_handler(is_done: bool = Body(..., embed=True)):
pass
Query paremeter
그 외의 parameter는 기본적으로 query parameter로 처리됩니다.
@router.get("", status_code=200)
def get_todos_handler(order: str | None = None):
pass
답변 감사합니다!