728x90
- Python은 Django, Flask, Falcon 같은 프레임워크로 인해 lightweight web apps 을 신속히 개발함에 있어서 좋은 선택입니다.
- 수 년동안 Flask는 이를 위한 최고의 프레임워크였지만, 이에 FastAPI라는 새로운 도전자가 나타났습니다.
- FastAPI는 고성능(high performance), 낮은 진입장벽(easy to learn), 높은 생산성(fast to code), ready for production 라고 소개하고 있습니다.
FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.
주요 기능
- Fast: Starlette, Pydantic 덕분에 NodeJS 및 Go 와 동등한 고성능.
- Fast to code: 200% ~ 300% 의 생산성 향상.
- Fewer bugs: 휴먼 에러율이 40% 감소.
- Intuitive: 대부분의 editor 지원. 디버깅 시간 감소.
- Easy: 쉽게 사용하고 학습하도록 디자인. 문서 읽는 시간 감소.
- Short: 중복 코드 최소화.
- Robust: 자동 문서화 등 production 을 위한 코드.
- Standard-based: OpenAPI(Swagger), JSON Schema 등 호환.
시작하기
FastAPI는 Python의 type hints 기반에서 동작함으로 Python 3.6+ 이 필요합니다.
$ pip install fastapi
또한, Production 환경을 위해 Uvicorn, Hypercorn의 ASGI server도 필요합니다.
$ pip install uvicorn
{"Hello": "World"} 를 출력하는 간단한 API를 작성해 보겠습니다.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"Hello": "World"}
$ uvicorn main:app --reload
$ curl -X GET http://127.0.0.1:8000/
- 위에서 기능 중에 하나로 Read for production 말씀드렸습니다. 아래처럼 docs/, redoc/에 접근해보면 Swagger, redoc이 자동으로 호환되어 있는 걸 볼 수 있습니다.
- Production 레벨에서의 API는 기능 개발이 전부가 아닙니다.
- 기능 개발, 문서화, 명세서 등 통신과 협업을 위해 필요한 문서들을 FastAPI에서는 자동으로 지원해주니 그 시간에 비즈니스 로직이나 테스트코드를 작성하여 제품의 품질을 높이는데 집중할 수도 있을 것 같습니다.
- 즉 동일한 리소스로 좀 더 높은 품질의 제품을 생산할 수 있을 것입니다.
Async
NodeJS와 Go와 비교하였을 때 Python 프레임워크의 가장 큰 단점은 요청을 비동기로 처리 할 수 없다는 점입니다. 하지만 ASGI가 도입된 이후로 이는 더 이상 문제가 되지 않고, FastAPI는 이를 최대한으로 활용하고 있습니다. 단지 함수에 async만 선언하면 비동기 처리가 가능합니다.
@app.get("/")
async def root():
return {"Hello": "World"}
python에서 Django, flask가 API를 생산하는데 최고의 도구입니다.
하지만 FastAPI의 멋진 기능들로 인해 새로운 강자가 태어날 듯 합니다!
출처 : https://fastapi.tiangolo.com/ko/
728x90
'FastAPI' 카테고리의 다른 글
Tortoise ORM 공식 문서 예제 (0) | 2022.04.20 |
---|