FastAPI 공식문서 따라하기[19] - Form Data
https://fastapi.tiangolo.com/tutorial/request-forms/ 공식문서 따라하는 글
☑️ Form Data
Form
을 사용하면 JSON
형식 대신 폼 필드로 들어온 데이터를 받을 수 있다.
그 전에 pip install python-multipart
를 통해 필요 패키지를 설치한다.
1
2
3
4
5
6
7
8
9
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login/")
async def login(username: str = Form(default={}), password: str = Form(default={})):
return {"username": username}
예를 들어서 OAuth2
를 사용한다고 하면, form을 통해서 username
과 password
를 보내기를 요구할 것이다.
위의 예제는 JSON
이 아닌, form fields를 통해 속성값들을 받고 있다.
Form
은Body
를 상속받은 클래스라고 한다.
☑️ About “Form Fields”
HTML forms(<form></form>
)은 JSON
과 달리 특이한 인코딩을 통해 데이터를 서버에 전달한다.
폼데이터는 “media type”으로
application/x-www-form-urlencoded
형태로 인코딩 된다.
만약 폼 데이터에 파일이 포함되어 있다면 이는multipart/form-data
로 인코딩 된다.
위의 예제에서는
Form
를 여러개 사용해 데이터를 받고 있는데,JSON
을 받는Body
와 혼합해서 사용할 수 없다. 이건FastAPI
가 제한하는게 아니고HTTP protocol
이 제한하는 것이다.
This post is licensed under CC BY 4.0 by the author.