인터넷을 찾아보니 FastAPI 무료 강의도 거의 없고, 참고할만한 자료들이 아직은 부족해 보였다.
그러다가 공식 문서를 보았는데, 너무 친절하고 자세하게 되어있어서 엄청 놀랐다. 내가 본 공식문서들 중에서 가장 좋았다고 느낀 것 같다.
그래서 FastAPI는 공식 문서를 읽어보며 정리하는 느낌으로 적어보려고 한다.
공식 문서에 들어가보면, FastAPI를 다음과 같이 소개하고 있다.
FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.8+의 API를 빌드하기 위한 웹 프레임워크입니다.
주요 특징으로는 다음과 같이 적혀있다.
빠름은 Go보다 빠르지는 않겠지만, 그만큼 빠른 속도라는 것을 강조하는 것 같다.
코드가 간결하고 API를 개발하는 난이도가 낮으며, 빠르게 API를 개발할 수 있는 장점은 나도 사용해보면서 느낄 수 있었다.
직접 사용해보면서 느꼈던 단점은 아직 다른 프레임워크에 비해 레퍼런스가 부족하고, 정형화된 구조가 없다는 것이 조금 불편했다.
FastAPI 프로젝트를 시작해보자.
우선 터미널에 명령어를 입력해 FastAPI와 uvicorn을 설치해준다.
pip install fastapi
pip install "uvicorn[standard]"
Uvicorn은 파이썬용 ASGI(Asynchronous Server Gateway Interface) 서버로, 비동기 방식의 처리가 가능하며, FastAPI를 통한 웹 서버 개발은 FastAPI와 Uvicorn을 함께 사용해 개발을 진행한다고 생각하면 될 것 같다.
프로젝트를 생성하고자 하는 위치에 cafe라는 폴더를 생성 후, 폴더 안에 아래와 같이 main.py파일을 생성하였다.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
가장 먼저, FastAPI를 import하고 app이라는 이름의 인스턴스를 생성한다.
다음으로, 경로 작동 함수를 정의하여 API 기능을 구현하는 과정으로 이루어진다.
코드를 실행할 때는 uvicorn main:app --reload로 실행한다.
이것은 main.py 파일에 있는 FastAPI 오브젝트인 app을 시작한다는 의미이다.
--reload가 붙으면 코드 변경 시 자동으로 서버를 재시작하며, 개발 시에만 사용한다.
localhost의 8000번 포트에서 서버가 실행되고 있는 것을 확인할 수 있다.
http://localhost:8000로 접속해보면 정상적으로 문자를 확인할 수 있다.
FastAPI를 사용하며 느낀 또다른 장점 중 하나는 서버를 시작하면 자동으로 Swagger UI를 제공한다는 것이다.
http://127.0.0.1:8000/docs 로 접속해보자. 다음과 같은 API 문서가 나타나 파라미터, 경로, 응답 등 다양한 정보를 바로 파악할 수 있도록 돕는다. 작성한 API를 테스트하는데도 큰 도움이 된다.

위의 API 문서가 마음에 들지 않는다면 다른 API 문서도 사용할 수 있다.
http://127.0.0.1:8000/redoc 로 접속해보면 다른 Swagger UI가 나온다. 취향에 따라 선택적으로 사용할 수 있다.
