[질문] api handler 매개변수 정리
안녕하세요, 강의 잘 듣고 있습니다.
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): passRequest 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)): passQuery paremeter
그 외의 parameter는 기본적으로 query parameter로 처리됩니다.
@router.get("", status_code=200) def get_todos_handler(order: str | None = None): pass
FasAPI Swagger UI에서 단일조회 todo_id 를 사용했는데, 입력값에 1을 넣으니 오류가 뜹니다 ㅠ
0
86
2
DB 질문
0
80
2
Post API 강의 질문
0
54
2
post 작성 오류
0
106
3
uvicorn 종료 문제
0
435
2
왜 return타입이 ToDo라는 스트링인가요?
0
130
2
ORM 연관관계
0
109
2
Oracle DB 연결과 관련해 질문이 있습니다..
0
153
2
섹션 2, 3의 PATCH API의 차이점
0
132
1
ORM 테이블 생성
0
119
1
테스트 코드 오류
0
177
1
orm relationship 정의 중 해당 에러 발생 시 어떻게 고쳐야 하는걸까요
0
214
3
FastAPI 폴더 구조에 대해 질문이 있습니다.
0
407
2
질문 있습니다.
0
160
2
mysql root 비밀번호 변경관련
0
294
2
[질문] patch API
0
151
3
디자인 패턴
0
128
1
main.py 리로드문제
0
235
2
인터프리터 오류
0
285
4
로그 저장에 대한 질문입니다.
0
100
1
Internal Server Error
0
239
2
PATCH API - 수정
0
198
2
파이참 임포트 문제
0
259
1
INFO sqlalchemy.engine.Engine ROLLBACK
0
215
1





