| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- daemonset
- 네트워크
- 핸드셰이크
- 리소스 풀링
- Web
- 온프레미스
- configmap
- 클라우드
- 도커
- Replicaset
- 해시
- namespace
- goorm
- 해커톤
- 다중화
- 클라우드 네이티브 5회차
- 하둡
- ResourceQuota
- Urn
- LimitRange
- dns
- 고가용성
- 웹 스토리지
- docker
- cronjob
- OverTheWire
- 혼잡제어
- k8s
- 네트워크 가상화
- 빅데이터
Archives
- Today
- Total
NakedFlower 님의 블로그
FastAPI 공부 본문
이론
FastAPI란?
Python 기반의 웹 프레임워크로, 빠르고 간결한 API개발을 목적으로 만들어졌다.
최신 Python기능을 적극 활용하여 코드의 생산성과 유지보수성을 높였다.
- 타입 힌팅(Type Hinting): FastAPI는 Python의 타입 힌팅을 사용하여 자동으로 API 문서를 생성하고, 타입 검사를 통해 버그를 사전에 방지할 수 있습니다.
- 자동화된 문서 생성: FastAPI는 Swagger와 ReDoc을 사용하여 API의 문서를 자동으로 생성합니다. 개발자는 추가적인 설정 없이도 API 사용법을 쉽게 설명할 수 있습니다.
- 비동기 지원: FastAPI는 Python의 async 와 await 키워드를 지원하여 비동기 처리를 매우 효율적으로 수행할 수 있습니다. 이를 통해 많은 요청을 동시에 처리하는 고성능 API 서버를 쉽게 만들 수 있습니다.
- 빠른 성능: FastAPI는 Starlette과 Pydantic과 같은 고성능의 경량 라이브러리를 기반으로 만들어졌습니다. 이로 인해 많은 요청을 짧은 시간 안에 처리할 수 있습니다.
실습
먼저 실습 전에 터미널에
pip3 install fastapi
pip3 install uvicorn
을 입력해서 환경 구축부터 해줍시다
from fastapi import FastAPI, Form, Request
from fastapi.templating import Jinja2Templates
from fastapi.responses import HTMLResponse
# FastAPI의 인스턴스를 생성
app = FastAPI()
templates = Jinja2Templates(directory="templates")
# templates 폴더의 "index.html" 응답
@app.get("/", response_class=HTMLResponse)
async def read_root(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
# 사용자가 폼을 통해 보낸 데이터(content)를 받아서 "result.html" 템플릿에 넘김
@app.post("/result", response_class=HTMLResponse)
async def post_result(request: Request, content: str = Form(...)):
return templates.TemplateResponse("result.html", {"request": request, "content": content})
위 코드로 main.py 파일을 만들어주고
같은 파일 안에 templates라는 폴더를 만들어서 그 안에
index.html파일과 result.html파일을 만들어줍니다.

그리고
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Index</title>
</head>
<body>
<form action="/result" method="post">
<input type="text" name="content" placeholder="내용을 입력하세요...">
<button type="submit">제출</button>
</form>
</body>
</html>
index.html과
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Result</title>
</head>
<body>
<h1>입력한 내용:</h1>
<p>{{ content }}</p>
</body>
</html>
result.html파일을 만들어주면
