출처: https://fastapi.tiangolo.com/tutorial/request-forms/
아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다.
폼 데이터
fastapi는 폼 데이터를 처리 하기 위해 Form
을 제공합니다.
from fastapi import FastAPI, Form # Form import
from typing_extensions import Annotated
app = FastAPI()
@app.post("/login/")
# username: Annotated[str, Form()] -> Form, Annotated를 사용하여 username을 폼 데이터로 지정
# password: Annotated[str, Form()] -> Form, Annotated를 사용하여 password를 폼 데이터로 지정
async def login(username: Annotated[str, Form()], password: Annotated[str, Form()]):
return {"username": username}
테스트를 위해 HTML 화면을 만드는 코드를 추가 합니다.
# 기존에서 추가된 import
from fastapi import FastAPI, Form, Response
from fastapi.responses import HTMLResponse
from typing_extensions import Annotated
app = FastAPI()
@app.post("/login/")
async def login(username: Annotated[str, Form()], password: Annotated[str, Form()]):
return {"username": username}
# 기존 코드
# 테스트를 위해 HTML 화면을 만드는 코드를 추가
@app.get("/", response_class=HTMLResponse)
async def get_login_form():
html_content = """
<html>
<body>
<form action="/login/" method="post">
<input type="text" name="username" placeholder="Username">
<input type="password" name="password" placeholder="Password">
<input type="submit" value="Login">
</form>
</body>
</html>
"""
return Response(content=html_content, media_type="text/html")
테스트
http://localhost:8000/
위의 URL로 접속하면 아래와 같은 화면이 나옵니다.
위의 화면에서 username과 password를 입력 합니다.
Login
버튼을 클릭하면 아래와 같은 결과가 나옵니다.
'웹 프레임워크 > FastAPI' 카테고리의 다른 글
FastAPI - 12 (파일 업로드 / 파일 다운로드) (0) | 2023.12.19 |
---|---|
FastAPI - 11 (파일 요청 / 폼과 파일 요청) (0) | 2023.12.18 |
FastAPI - 09 (응답 상태 코드 - Response Status Code) (0) | 2023.12.18 |
FastAPI - 08 (응답 모델: Response Model) (0) | 2023.12.18 |
FastAPI - 07 (헤더(Header) 매개변수) (0) | 2023.12.18 |