[FastAPI] FastAPI 시작하기

이한슬·2024년 3월 26일

FastAPI

목록 보기
1/1
post-thumbnail

인터넷을 찾아보니 FastAPI 무료 강의도 거의 없고, 참고할만한 자료들이 아직은 부족해 보였다.
그러다가 공식 문서를 보았는데, 너무 친절하고 자세하게 되어있어서 엄청 놀랐다. 내가 본 공식문서들 중에서 가장 좋았다고 느낀 것 같다.
그래서 FastAPI는 공식 문서를 읽어보며 정리하는 느낌으로 적어보려고 한다.

FastAPI

공식 문서에 들어가보면, FastAPI를 다음과 같이 소개하고 있다.

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

주요 특징으로는 다음과 같이 적혀있다.

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

빠름은 Go보다 빠르지는 않겠지만, 그만큼 빠른 속도라는 것을 강조하는 것 같다.
코드가 간결하고 API를 개발하는 난이도가 낮으며, 빠르게 API를 개발할 수 있는 장점은 나도 사용해보면서 느낄 수 있었다.

직접 사용해보면서 느꼈던 단점은 아직 다른 프레임워크에 비해 레퍼런스가 부족하고, 정형화된 구조가 없다는 것이 조금 불편했다.


FastAPI 프로젝트를 시작해보자.
우선 터미널에 명령어를 입력해 FastAPIuvicorn을 설치해준다.
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가 나온다. 취향에 따라 선택적으로 사용할 수 있다.

profile
궁금하면 일단 먹어보는 소프트웨어 전공생

0개의 댓글