Python3.6+ API 빌드를 위한 웹 프레임워크 FastAPI를 소개하는 포스트입니다. 🐹
Modern and Fast
빠르고 강력하다! FastAPI를 설명하는 직관적인 두 단어입니다.
FastAPI는 Python3.6+ API 빌드를 위한 웹 프레임워크로, Python 3.6 type hint 기반으로 설계되었기 때문에 안정적이면서도 동시에 높은 성능을 낼 수 있습니다.
같은 python 웹 프레임워크인 Flask와 FastAPI를 비교한 포스트 링크를 첨부합니다!
pip install "fastapi[all]" # uvicorn 패키지를 포함하여 모든 dependencies와 features를 설치!
다음은 간단한 FastAPI 예제 코드입니다.
main.py
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
Live server 실행 + http://localhost:8000 접속
» uvicorn main:app --reload
# main: main.py
# app: main.py에서 생성된 object (app = FastAPI())
# --reload: hot reload 옵션 (코드 변경 시 서버 reload)
# Output
INFO: Will watch for changes in these directories: ['/my/directory/Fastapi']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [16363] using watchgod
INFO: Started server process [16365]
INFO: Waiting for application startup.
INFO: Application startup complete.
URL mapping
# 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}
Interactive API docs
http://localhost:8000/docs 에 접속하면 대화형 API 창을 확인할 수 있습니다.
일반적으로 Postman Agent에서 http 리퀘스트를 보내 간단히 서버 응답을 테스트하는데, 이 기능이 FastAPI에 내장되어있습니다!
Alternative API docs
Uvicorn은 Python asyncio 프레임워크를 위한 low-level 서버/애플리케이션 인터페이스를 지원하는 ASGI(Asynchronous Server Gateway Interface) 웹 서버입니다. FastAPI로 작성된 코드는 CLI에서 uvicorn
명령어로 실행합니다.
기존에 많이 사용하던 Django, Flask와 마찬가지로 Python 기반 API 서버를 구현하는 코드를 작성하는 프레임워크인데, Flask와 비슷하지만 기능적으로 보완(비동기 요청 처리, )된 형태라고 보시면 됩니다. API 요청 처리에 특화된 '모던하고 빠른' 트렌디한 웹 프레임워크입니다. 🦊