FastAPI 찍어먹기

공대생 디자이너

·

2021. 2. 2. 19:05

 

FastAPI 찍어먹기

개발자 SNS 그룹을 확인하던 도중 FastAPI라는 것을 발견하였습니다.

Python의 프레임워크로 3.6+API를 빌드하기 위한 웹프레임워크라고 하는데 장고밖에 모르던 저였기에 도전해보기로하였습니다.

 

https://fastapi.tiangolo.com/

 

그래서 FastAPI가 얼마나 빠르면 Fast를 달고다닐까! 하고 특징들을 살펴봤습니다.

 

FastAPI 특징

Fast: Very high performance, on par with NodeJS and Go (thanks to Starlette and Pydantic).
One of the fastest Python frameworks available.

Fast to code: Increase the speed to develop features by about 200% to 300%. *

Fewer bugs: Reduce about 40% of human (developer) induced errors.*

Intuitive: Great editor support. Completion everywhere.

Less time debugging.Easy: Designed to be easy to use and learn.

Less time reading docs.Short: Minimize code duplication.

Multiple features from each parameter declaration. 

Fewer bugs.Robust: Get production-ready code.

With automatic interactive documentation.

Standards-based: Based on (and fully compatible with) the open standards for APIs:
		OpenAPI (previously known as Swagger) and JSON Schema.

결국 경쟁력을 가지기 위해서는 데이터 처리의 속도(가장 빠른 파이선 프레임워크), 짧은코드, 견고한 표준 기반 이정도가 될 것 같습니다.

 

FastAPI 설치

FastAPI를 설치해보겠습니다.

pip install fastapi
pip install uvicorn

Django와 마찬가지로 pip 패키지로 설치하고 uvicorn과 함께 구동됩니다.

비동기식 처리를 위해 uvicorn을 사용하는데 ASGI(Asynchronous Server Gateway Interface)서버에 해당됩니다.

 

서버를 시작하기 위해서는 .py파일이 필요하고 main.py를 생성하여 기본옵션만 넣어주고 구동시켜보겠습니다.

 

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message":"Hello World"}

먼저, FastAPI모듈을 임포트하고 app에 함수를 선언합니다.

가장 기본경로로 접속할때 root 함수로 진입하여 딕셔너리를 반환합니다.

장고보다는 flask에 가깝다고 생각되네요.

def 앞에 async 키워드를 붙여 비동기 처리하여 코루틴합니다.

 

fastapi와 uvicorn 실행

uvicorn main:app --reload --host=0.0.0.0 --port=8000

uvicorn >> 실행
main:app >> main.py의 main과 함수객체 app=FastAPI()
reload >> 코드 변경를 감지하여 자동으로 재시작됨
host >> 모든 접근권한을 주기 위해 0.0.0.0으로 입력
port >> 접근 포트 지정

 

서버 접속

 

너무 빠른 서버 구축 끝

지정해준 호스트와 포트를 통해 서버에 접근하면 다음과 같이 리턴받은 딕셔너리를 그대로 표현한다.

이때, FastAPI에서는 자동으로 페이지를 하나 더 만들어주는데 이렇게 생겼습니다.

Request의 종류와 데이터들을 보여줍니다.

개인적으로 rest api와 같은 개념들을 잘 사용해본적이 없기때문에 생소한 부분이었습니다.

 

마치며...

이번 글에서는 단순히 FastAPI라는 개념에 대해서 알아보고 설치부터 간단하게 서버열기까지 해보았습니다.

글 제목답게 찍어먹어본거지 아직 찍어먹을게 산더미같습니다.

좀 더 빠르게 달려보도록 하죠.

 

 


 

작성한 내용은 개인적인 경험에 의해 작성되었습니다.

포스팅 내용의 잘못된 부분이나 질문은 댓글 이메일로 언제든 남겨주세요!

포스팅 내용이 도움이 되고 공감이 되었다면 공감버튼 꾹 눌러주시면 감사하겠습니다!