Fast API

FastAPI는 Python 기반의 웹 프레임워크 중 하나로, 높은 성능과 개발 생산성, 그리고 API 문서 자동 생성 등의 특징이 있습니다. FastAPI는 ASGI(Asynchronous Server Gateway Interface) 서버를 이용하여 비동기 처리 방식으로 HTTP 요청을 처리하므로, I/O 작업이 많은 경우에 빠른 성능을 보입니다.
FastAPI의 예시로는 아래와 같은 것들이 있습니다.
- Todo List API
FastAPI로 만든 간단한 Todo List API 예제입니다. 이 예제는 간단한 CRUD(Create, Read, Update, Delete) 기능을 가진 Todo List를 만드는 API입니다. FastAPI에서는 Pydantic을 이용하여 Request와 Response 모델을 정의하고, 이를 이용하여 자동으로 API 문서를 생성할 수 있습니다.
- Weather API
OpenWeatherMap API를 이용하여 현재 날씨 정보를 가져와서 FastAPI로 제공하는 예제입니다. 이 예제는 FastAPI의 샘플 예제 중 하나로, 비동기 처리 방식으로 HTTP 요청을 처리하며, FastAPI에서 제공하는 Depends 데코레이터를 이용하여 간단한 인증 기능을 추가하였습니다.
- Image Recognition API
FastAPI와 TensorFlow를 이용하여 이미지 분류기 API를 만드는 예제입니다. 이 예제는 이미지를 업로드하면 해당 이미지의 분류 결과를 반환하는 API입니다. FastAPI에서는 FastAPI와 TensorFlow를 이용하여 모델을 로드하고, 업로드한 이미지를 전처리하여 모델에 입력하여 분류 결과를 반환합니다.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
@app.post("/items/")
def create_item(item: Item):
return item
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
return {"item_id": item_id, **item.dict()}
@app.delete("/items/{item_id}")
def delete_item(item_id: int):
return {"item_id": item_id}
위 코드는 간단한 REST API를 만드는 예시입니다. /items API에서는 GET, POST, PUT, DELETE 메소드를 지원하며, 각 메소드에 따른 동작을 구현하였습니다. pydantic을 이용하여 Request와 Response 모델을 정의하였으며, FastAPI에서 제공하는 데코레이터를 이용하여 API 엔드포인트를 정의하였습니다.
- GET /
- Root 엔드포인트로, {"Hello": "World"}를 반환합니다.
- GET /items/{item_id}
- item_id에 해당하는 Item을 반환합니다.
- q 매개변수를 받아서 함께 반환합니다.
- POST /items/
- Request body에 Item 정보를 받아서, 해당 Item을 반환합니다.
- PUT /items/{item_id}
- item_id에 해당하는 Item을 Request body에 있는 정보로 업데이트하고, 업데이트된 Item 정보를 반환합니다.
- DELETE /items/{item_id}
- item_id에 해당하는 Item을 삭제하고, 삭제된 Item 정보를 반환합니다.