프레임워크/FastAPI

[FastAPI] FastAPI [17] Form data

:) :) 2023. 5. 9. 16:04

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: Define Form parameters Create form parameters the

fastapi.tiangolo.com

<FastAPI 공식문서 참조>

 

0. Form Data

 형식 필드(form field)를 JSON type 대신 사용할 수 있다.

 

1. Import Form

from typing import Annotated

from fastapi import FastAPI, Form

app = FastAPI()


@app.post("/login/")
async def login(username: Annotated[str, Form()], password: Annotated[str, Form()]):
    return {"username": username}

 

2. Define Form parameters

Body 및 Query 형과 같은 방버으로 Form 매개변수를 정의할 수 있다.

@app.post("/login/")
async def login(username: Annotated[str, Form()], password: Annotated[str, Form()]):
    return {"username": username}

위의 예제에서, password flow로 사용되는 OAuth2 명세의 방법 중 하나는

form 필드형식으로 된 username과 password가 필요하다.

정확히 username과 password로 된 자료형이 필요해 form field를 사용해야 한다.

 

위처럼 선언시 Body에서 얻을 수 있는 구성(유효성 검정, 예시, alias 규칙)들을 다 사용할 수 있다.

 

* Form은 Body를 직접 상속한 클래스이다.

 

 

3. About "Form Fields"

  form tag로 서버에 전해지는 데이터는 JSON과 다르다.

따라서 FastAPI는 form data가 form data로 잘 읽히도록 보장해줘야하고, 보장해 준다.

 

* form형식의 데이터는 보통 media type을 사용해 인코드된다.

 

 

4. References

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: Define Form parameters Create form parameters the

fastapi.tiangolo.com