본문 바로가기

FastAPI

Form 데이터

Form은 HTML 태그 중 하나입니다. 대개 어떤 정보를 입력 받은 "폼"에 대한 컴포넌트를 랜더링 하기 위해서 사용합니다.

그 전에 간단한 정적 파일들을 제공하는 방법에 대해서 알아보겠습니다.

 

id와 password를 입력 받을 때, form tag를 사용합니다.

 

보통 웹에서 정적 파일이라 하면 단순 이미지 뿐만 아니라 html, js, css 등을 포함합니다. 브라우저는 서버에 요청을 하고, 정적 파일들을 다운로드 합니다. FastAPI는 API에 특화되어 있지만, 당연히 정적 파일도 지원을 합니다.

 

static 이라는 폴더를 생성한 뒤 생성된 static 폴더 안에 login.html 파일을 생성합니다.

<form method="post" action="http://localhost:8000/login">
  <input type="text" name="username" placeholder="Username" required="required" />
  <input type="password" name="password" placeholder="Password" required="required" />
  <button type="submit" class="btn btn-primary btn-block btn-large">Let me in.</button>
</form>

 

input 태그에서는 name의 값이 form의 매개변수가 됩니다.

 

import uvicorn
from fastapi import FastAPI, Form
from fastapi.staticfiles import StaticFiles


app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")


@app.post("/login")
def login(username: str = Form(...), password: str = Form(...)):
    return {"username": username}

if __name__ == '__main__':
	uvicorn.run("main:app", reload = True)

 

그리고 위와 같이 main.py 파일을 작성합니다.

 

app.mount 함수는 다른 WSGI 또는 ASGI 앱을 마운트가 가능하게 합니다.

다만, 여기서는 StaticFiles를 이용해서 정적 앱을 만들었습니다.

 

 

'FastAPI' 카테고리의 다른 글

파일처리-2  (0) 2024.02.11
파일처리 - 1  (0) 2024.02.10
RDB 연동 - 4  (0) 2024.02.04
RDB 연동 - 3  (0) 2024.02.02
RDB 연동 - 2  (0) 2024.01.30