본문 바로가기
Web Framework/FastAPI

[FastAPI] 소개

by cogito21_python 2024. 2. 22.
반응형
 Index
 1. FastAPI
 2. 환경설정
 3. Tutorial
 4. 주요 개념
Reference

1. FastAPI

FastAPI

- FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.8+의 API를 빌드하기 위한 웹 프레임워크

 

(특징)

- 빠른 코드 작성

- 적은 버그

- 직관적이고 쉬움

- 대화형 API 제공(Swagger UI)

- 대안 API 제공

- 프로덕션을 위해 Uvicorn, Hypercorn 이용

 

2. 환경설정

환경설정

1. Python 버전 설정

# conda create -n <환경명> python=<버전>
conda create -n fastapi python=3.10

 

2. 가상환경 실행

# conda activate <환경명>
conda activate fastapi

 

3. fastapi설치

pip install fastapi

 

4. 실행 확인

1) fastapi 예시 코드 작성

# app.py
from fastapi import FastAPI, Request
import uvicorn

app = FastAPI()

@app.get("/")
def home(request: Request):
	return {"name": "Hello World"}

if __name__=="__main__":
  uvicorn.run(app, "127.0.0.1", port=8080)

 

2) terminal에서 서버 실행

# 서버 실행
python app.py

 

3) 웹 브라우저에서 localhost:8080로 접속

- localhost는 127.0.0.1을 의미

 

3.  Tutorial

Tutorial

1. 프로젝트 구조

fastapi(directory)
  - templtates(directory)
    - index.html(file)
    - test.html(file)
  - app.py(file)

 

2. 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>Main Page</title>
</head>
<body>
    <nav>
    	<ul>
        	<li><a href="/"></a>Home</li>
            <li><a href="/test">Test</a></li>
    	</ul>
    </nav>
    
    <h1> Main Page </h1>
    <p> Welcome to Main Page </p>
    
    {{}}
    
</body>
</html>
# test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test Page</title>
</head>
<body>
    <nav>
    	<ul>
        	<li><a href="/"></a>Home</li>
            <li><a href="/test">Test</a></li>
    	</ul>
    </nav>
    
    <h1> Test Page </h1>
    <p> {{ context }} </p>
        
</body>
</html>

 

3. app.py 작성

# app.py
from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates
import uvicorn

app = FastAPI()
templates = Jinja2Templates(directory="templates")

@app.get("/")
def home(request: Request):
	return templates.TemplateResponse(name="index.html",{"request": request})
    
@app.get("/test")
def home(request: Request):
	return templates.TemplateResponse(name="test.html",{"request": request, "context": "Welcome to Test"})
    
    if __name__=="__main__":
      uvicorn.run(app, "127.0.0.1, port=8080)

 

4. 서버 실행

python app.py

 

5. 웹 브라우저에서 127.0.0.1:8080으로 접속 확인

 

 

4. 주요 개념

주요 개념

Response

- HTTP Method: (Get / Post / Put / Delete)

- from fastapi import FastAPI, Response

 

 HTML Template

- 웹 페이지 템플릿

- Jinja 사용

- fastapi.templating.Jinja2Templates

 

Database

- ORM

- from sqlmodel import Field, Session, SQLModel, create_engine

- sqlalchemy

 


Reference

[Site: FastAPI(Home)]
https://fastapi.tiangolo.com/ko/
[Docs: FastAPI(Tutorial)]
https://fastapi.tiangolo.com/ko/learn/
[Docs: FastAPI(Reference)]
https://fastapi.tiangolo.com/ko/reference/
반응형

'Web Framework > FastAPI' 카테고리의 다른 글

[FastAPI] 학습 참고자료  (0) 2024.02.22