728x90
반응형

JSON 대신 폼 필드를 전달 받아야 한다면, Form 을 사용할 수 있습니다.

 

정보

폼을 사용하기 위해서는, 우선 python-multipart 를 설치해야 합니다.

예를 들어 pip install python-mutipart 와 같은 방식으로 가능합니다.

 

Form 임포트

fastapi 로부터 Form 을 임포트합니다:

 

 

Form 매개변수 정의

Body 또는 Query 와 같은 방식으로 폼 매개변수를 생성합니다:

 

 

예를 들어, OAuth2 명세를 사용할 수 있는 방법 중 하나로 ("비밀번호 흐름"이라 불리는) 폼 필드에 usernamepassword 을 전송하는 게 필수로 요구되는 방법이 있습니다.

 

해당 명세는 정확히 명명된 usernamepassword 를 요구하고, JSON이 아닌, 폼 필드로 전달되어 집니다.

 

Form 을 사용하여 Body (및 Query , Path , Cookie ) 를 사용했을 때와 동일한 메타데이터 및 유효성 검사를 선언할 수 있습니다.

 

정보

FormBody 를 직접 상속 받는 클래스입니다.

 



폼 바디를 선언하기 위해서는, 매개변수가 쿼리 매개변수 또는 바디 (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/

 

Form Data - FastAPI

Form Data When you need to receive form fields instead of JSON, you can use Form. Info To use forms, first install python-multipart. E.g. pip install python-multipart. Import Form Import Form from fastapi: from fastapi import FastAPI, Form app = FastAPI()

fastapi.tiangolo.com

 

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