카테고리 없음

FastAPI로 초간단 REST API 서버 만들기

Soyeon0111 2021. 12. 14. 01:34
반응형

python의 웹 프레임워크는 아주 여러가지 종류가 있다.
내가 가장 자주 접했던 Django와 Flask, FastAPI, Sanic 등

웹 프레임워크에는 모든 기능이 포함된 풀(스택) 프레임워크와 일부 기능이 포함되지 않은 마이크로 프레임워크가 있다. 
Django는 풀 프레임워크로 정말 많이 사용되는 프레임워크이다. (우리 회사를 포함하여..)
그리고 Flask와 FastAPI, Sanic등은 마이크로 프레임워크로 일부 기능은 포함되지 않은 프레임워크이다. 

서칭하다가 웹 프레임워크 끝판왕 가리기 라는 포스팅을 보았는데 너무 잘 정리해두셔서 기록해둔다. 

 

이번에 새로 검증하게 된 Component에서 FastAPI를 사용한다고 하여 실습을 해보려고 한다. 

공식문서가 아주 잘 되어 있어서 따라해보기 너무 편했다. 

 

FastAPI

FastAPI FastAPI 프레임워크, 고성능, 간편한 학습, 빠른 코드 작성, 준비된 프로덕션 문서: https://fastapi.tiangolo.com 소스 코드: https://github.com/tiangolo/fastapi FastAPI는 현대적이고, 빠르며(고성능), 파이썬

fastapi.tiangolo.com

 


용어 알고가기 

  • WSGI (Web Server Gateway Interface) : Web server와 Web application을 연결해주는 python framework. 대표 예는 gunicorn이 있다.
  • ASGI (Asynchronous Server Gateway Interface) : WSGI의 상위 호환. 대용량 트래픽을 처리하기 위한 비동기 처리 지원. 대표 예는 uvicorn

FastAPI 사용해보기

1. fastapi와 uvicorn을 설치한다

python 3.6 이상에서 사용

pip install fastapi
pip install uvicorn

나는 이미 설치되어있다.

 

2. 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}

 

3. 서버를 실행한다.

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

 

4. 구현 내용 확인하기

 

GET / 을 해보자

@app.get("/") 부분

 

GET /items/{id}를 해보자

@app.get("/items/{item_id}") 부분

 

 

http://127.0.0.1:8099/docs 로 가보면 swagger ui 도 자동생성 되어 있음을 볼 수 있다. 싱기방기~

 

http://127.0.0.1:8099/redoc 로 가보면 swagger ui와는 다른 ui의 문서를 볼 수 있다. 좀 더 깔끔하고 보기 편한 느낌.

 

 

반응형