[python] FastAPI에서 파일 압축 및 압축 해제 구현하기

FastAPI는 Python 기반의 빠르고 현대적인 웹 프레임워크로, 파일 업로드와 다운로드와 같은 작업을 효율적으로 처리할 수 있습니다. 이번 글에서는 FastAPI를 사용하여 파일 압축과 압축 해제를 구현하는 방법에 대해 알아보겠습니다.

1. 필요한 라이브러리 설치하기

FastAPI에서 파일 압축과 압축 해제를 구현하기 위해서는 다음과 같은 라이브러리를 설치해야 합니다:

pip install fastapi
pip install pydantic
pip install starlette
pip install python-multipart

2. FastAPI 앱 생성하기

FastAPI 앱을 생성하고 파일 압축과 압축 해제를 처리할 엔드포인트를 추가합니다:

from fastapi import FastAPI, UploadFile, File
from fastapi.responses import StreamingResponse
import zipfile

app = FastAPI()

@app.post("/compress")
async def compress_file(file: UploadFile = File(...)):
    # 압축할 파일 저장 경로
    save_path = "compressed.zip"
    
    with zipfile.ZipFile(save_path, "w") as zipf:
        zipf.write(file.filename, file.file)
    
    return {"message": "File compressed successfully"}

@app.post("/decompress")
async def decompress_file(file: UploadFile = File(...)):
    # 압축 해제할 파일 저장 경로
    save_path = "decompressed"
    
    with zipfile.ZipFile(file.file, "r") as zipf:
        zipf.extractall(save_path)
    
    return {"message": "File decompressed successfully"}

3. 파일 압축 및 압축 해제 테스트

http://localhost:8000/docs로 이동하여 FastAPI의 Swagger UI를 엽니다. 이제 /compress/decompress 엔드포인트를 사용하여 파일 압축과 압축 해제를 테스트할 수 있습니다.

압축할 파일을 선택하고 /compress 엔드포인트를 실행하면 선택한 파일이 compressed.zip으로 압축되어 저장됩니다. 동일한 방식으로 /decompress 엔드포인트를 실행하면 선택한 압축 파일이 decompressed 폴더에 압축 해제됩니다.

결론

FastAPI를 사용하여 파일 압축과 압축 해제를 구현하는 방법에 대해 간단히 알아보았습니다. FastAPI의 강력한 기능을 활용하여 파일 관련 작업을 더욱 효율적으로 처리할 수 있습니다.

참고 자료