Post

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을 통해서 usernamepassword를 보내기를 요구할 것이다.

위의 예제는 JSON이 아닌, form fields를 통해 속성값들을 받고 있다.

FormBody를 상속받은 클래스라고 한다.

☑️ 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.