[ FastAPI ] 폼 데이터
728x90
반응형
JSON 대신 폼 필드를 전달 받아야 한다면, Form 을 사용할 수 있습니다.
정보
폼을 사용하기 위해서는, 우선 python-multipart 를 설치해야 합니다.
예를 들어 pip install python-mutipart 와 같은 방식으로 가능합니다.
Form 임포트
fastapi 로부터 Form 을 임포트합니다:
Form 매개변수 정의
Body 또는 Query 와 같은 방식으로 폼 매개변수를 생성합니다:
예를 들어, OAuth2 명세를 사용할 수 있는 방법 중 하나로 ("비밀번호 흐름"이라 불리는) 폼 필드에 username 및 password 을 전송하는 게 필수로 요구되는 방법이 있습니다.
해당 명세는 정확히 명명된 username 및 password 를 요구하고, JSON이 아닌, 폼 필드로 전달되어 집니다.
Form 을 사용하여 Body (및 Query , Path , Cookie ) 를 사용했을 때와 동일한 메타데이터 및 유효성 검사를 선언할 수 있습니다.
정보
Form 은 Body 를 직접 상속 받는 클래스입니다.
팁
폼 바디를 선언하기 위해서는, 매개변수가 쿼리 매개변수 또는 바디 (JSON) 매개변수로 해석될 수 있기 때문에, Form 을 명시적으로 사용해야 합니다.
"폼 필드"
보통 HTML 폼( <form></form> )이 서버로 데이터를 전달하는 방식은 해당 데이터를 위해, JSON과는 다른 "특별한" 부호화를 사용합니다.
FastAPI는 JSON 대신 알맞은 장소로에서 해당 데이터를 조회할 수 있게 합니다.
기술적 세부사항
데이터 폼은 보통 "미디어 타입"의 application/x-www-form-urlencoded 을 사용해서 부호화됩니다.
그러나 폼에 파일이 포함될 때, multipart/form-data 로 부호화됩니다. 다음 챕터에서 파일을 다루는 법을 확인할 수 있습니다.
이러한 부호화 및 폼 필드에 관해 더 알아보고 싶다면, POST 에 관한 MDN 웹 문서를 확인해보기 바랍니다.
주의
경로 동작 내부에 다중 File 및 Form 매개변수를 선언할 수 있지만, application/json 대신 multipart/form-data 를 사용하여 부호화된 바디가 있기 때문에, JSON으로 전달 받을 것이라 예상되는 Body 필드를 선언할 수는 없습니다.
이것은 FastAPI의 한계가 아닌, HTTP 프로토콜에 관한 부분입니다.
요약
폼 데이터 입력 매개변수를 선언하기 위해 Form 을 사용하기 바랍니다.
원문
https://fastapi.tiangolo.com/tutorial/request-forms/
728x90
반응형
'FastAPI > Tutorial - User Guide' 카테고리의 다른 글
[ FastAPI ] 요청 폼과 파일 (0) | 2021.09.27 |
---|---|
[ FastAPI ] 요청 파일 (0) | 2021.09.27 |
[ FastAPI ] 응답 상태 코드 (0) | 2021.09.25 |
[ FastAPI ] 추가 모델 (0) | 2021.09.20 |
[ FastAPI ] 응답 모델 (0) | 2021.09.20 |