본문 바로가기
Language&Framework/Fast API

Fast API의 특징 및 시작하기

by JUNG씨 2023. 2. 17.

fastAPI 공식문서 참조 : https://fastapi.tiangolo.com/

☑️ FastAPI란?

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

 

 

☑️ FastAPI의 장점 및 특징

  • 빠름: (Starlette과 Pydantic 덕분에) NodeJS 및 Go와 대등할 정도로 매우 높은 성능. 사용 가능한 가장 빠른 파이썬 프레임워크 중 하나.
  • 빠른 코드 작성: 약 200%에서 300%까지 기능 개발 속도 증가. *
  • 적은 버그: 사람(개발자)에 의한 에러 약 40% 감소. *
  • 직관적: 훌륭한 편집기 지원. 모든 곳에서 자동완성. 적은 디버깅 시간.
  • 쉬움: 쉽게 사용하고 배우도록 설계. 적은 문서 읽기 시간.
  • 짧음: 코드 중복 최소화. 각 매개변수 선언의 여러 기능. 적은 버그.
  • 견고함: 준비된 프로덕션 용 코드를 얻으십시오. 자동 대화형 문서와 함께.
  • 표준 기반: API에 대한 (완전히 호환되는) 개방형 표준 기반: OpenAPI (이전에 Swagger로 알려졌던) 및 JSON 스키마.

 

☑️ FastAPI 사용하는 이유

  • 배우기 쉽다.
  • 모던 파이썬 문법을 가지고 있다.
    - 비동기 키워드 : async, await
  • OpenAPI 기반이다. (+GraphQL)
  • 자동 문서 생성(docs)
  • 마이크로 프레임워크(Micro Framework)
    - API 서버와 MSA(Micro-Service Architecture)

 

☑️ FastAPI 시작하기

  • 가상환경 만들기
python3 -m venv 가상환경이름
  • fastAPI 패키지 설치
pip install "fastapi[all]"  # fastapi 패지지와 uvicorn 한번에 설치됨



pip install fastapi         # 따로 설치도 가능함!
pip install uvicorn
  • main.py 예제 파일 생성
from typing import Optional

from fastapi import FastAPI


app = FastAPI()


@app.get("/")
def read_root():
    return {
        "Hello": "World"
    }


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {
        "item_id": item_id, "q": q
        }
  • uvicorn 서버 실행
uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

uvicorn main:app 명령은 다음을 의미한다.

  • main: 파일 main.py (파이썬 "모듈")
  • app: main.py 내부의 app = FastAPI() 줄에서 생성한 오브젝트.
  • --reload: 코드 변경 후 서버 재시작. 개발에만 사용.

 

 

☑️ 자동화된 API문서 제공

  • http://127.0.0.1:8000 -> 서버를 실행해보면 main.py에 작성한 내용이 화면에 보여진다.

 

 

 

'Language&Framework > Fast API' 카테고리의 다른 글

[Fast API] streamlit -> fastAPI를 이용해 백엔드 구성하기  (0) 2023.02.28
FastAPI - Pydantic  (0) 2023.02.17
FastAPI - main.py  (0) 2023.02.17