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.
