FastAPI는 Python 기반으로 Flask와 같은 개발 편의성에 NodeJS, GO와 같은 성능과 안정성을 갖춘 WebFramework이다.
"FastAPI는 표준 파이썬 타입 힌트를 바탕으로 한 파이썬 3.6이상에서 작동하는, 현대적이고 빠른(고성능) API 서버 웹 프레임워크다." 라고 정의 내일 수 있다.
공식 페이지에서 언급하는 Key Feature는
- Fast / Fast to code / Fewer bugs / Intuitive / Easy / Short / Robust / Standards-based
특징은 다음과 같다.
- Starlette 프레임워크를 기반으로 한 비동기 API 서버 지원
- Pydantic을 사용한 Data validation 지원
- API Swagger, ReDoc 등을 사용한 API document 자동 생성 지원
- Python3.6+ Type Hinting 지원
- 빠름: (Starlette과 Pydantic 덕분에) NodeJS 및 Go와 대등할 정도로 매우 높은 성능. 사용 가능한 가장 빠른 파이썬 프레임워크 중 하나.
- 빠른 코드 작성: 약 200%에서 300%까지 기능 개발 속도 증가.
- 적은 버그: 사람(개발자)에 의한 에러 약 40% 감소.
- 직관적: 훌륭한 편집기 지원. 모든 곳에서 자동완성. 적은 디버깅 시간.
- 쉬움: 쉽게 사용하고 배우도록 설계. 적은 문서 읽기 시간.
- 짧음: 코드 중복 최소화. 각 매개변수 선언의 여러 기능. 적은 버그.
- 견고함: 준비된 프로덕션 용 코드를 얻으십시오. 자동 대화형 문서와 함께.
- 표준 기반: API에 대한 (완전히 호환되는) 개방형 표준 기반: OpenAPI (이전에 Swagger로 알려졌던) 및 JSON 스키마.
FastAPI에서 지원하는 기능은 다음과 같다.
- Headers, Cookies, Form Fields, Files 등에 파라미터 정의 기능
- maximum_length, regex 와 같은 validation constraints 설정 가능
- 사용하기 쉬운 의존성 주입
- OAuth2, JWT Tokens 및 HTTP Basic Auth 기능을 포함한 보안과 인증 기능
- Pydantic 덕에 가능해진 중첩 JSON 모델 선언
- Starlette 덕에 가능해진
- WebSockets
- GraphQL
- requests와 pytest 를 기반으로 한 극도로 쉬운 테스트
- CORS
- Cookie Sessions
설치
pip install fastapi
프로덕션을 위해 Uvicorn을 설치한다.
pip install uvicorn
예시로 다음과 같은 가장 기본적인 파일을 만들 수 있다.
from typing import Union
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: Union[str, None] = None):
return {"item_id": item_id, "q": q}
cmd 및 터미널에서 서버를 실행한다.
uvicorn main:app --reload
VSC에서는
.\uvicorn main:app --reload
라고 입력한다.