ETC

FastAPI가 뭘까?

D_Helloper 2023. 6. 9. 15:20

파이썬 3.6 이상에서 작동하는, 표준 파이썬 타입 힌트를 바탕으로 한, 현대적이고 빠른 API 서버 웹 프레임워크

  • Flask와 비슷한 구조를 가짐
  • 기본적으로 비동기식으로 작성되어 있어 빠른 성능을 보여줌

FastAPI 장점

공식 블로그의 장점에는 아래와 같은 설명이 기재되어 있다.

  • Node.js, Go와 비슷한 수준의 빠른 성능
    • Go는 태생부터 C와 속도 경쟁할 만큼 빨랐는데, 이러한 Go와 비견될 정도의 속도라면 충분히 장점이 될 것
  • 개발 속도 200%~300% 향상
  • 코드 버그 40% 감소
  • 쉬운 사용

부가적인 기능

  • 자동으로 API Documentation을 지원하기 때문에, 서버를 구동하고 /docs 로 접속하면 Swagger UI가 나옴

  • 데이터의 타입을 명시해줄 수 있음
    • 아래 예시는, 데이터를 정의하기 위해 class를 작성하고 데이터의 타입을 명시
    • 비동기로 작성하기 위해 함수 앞에 async 키워드 추가
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    store_detail: str = None #치킨전문점
    gps_lat: float = None #37.4977166
    gps_lon: float = None #127.0274515
    user_city: str = None #강남구
    user_dong: str = None #서초동
    user_dist: int = None #1

# 업종분석
@app.post("/analysis_svc/")
async def analysis_svc(item: Item):
    pass
    return {'svc_induty_nm':item.store_detail, 'slopee':'증가'}

출처 : https://jongsky.tistory.com/13

사용 예)

# main.py

from fastapi import FastAPI # FastAPI 모듈 가져오기

app = FastAPI() # 객체 생성

@app.get("/") # Route Path
def index():
	
    # Json 타입으로 값 반환
    return {
	    "Python": "Fast API Framework",
	}
    
@app.get("/something")
def something():
    return {
        "Something": "Test Page",
    }

 

MSA 구조를 채택하고, TTS 서버를 운용해야 할 때 한 번 사용해 봤는데 TTS 기능을 포함한 메서드를 정의해서 요청이 오면 TTS 가 동작하도록 만들었었다.

간단히 어노테이션을 활용하여 구현할 수 있고, 정말 빠르고 좋더라. 코드 자체도 굉장히 직관적인 편이라고 생각하는데,일단 나는 Flask보다 FastAPI를 자주 쓸 것 같다.