ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FastAPI로 샘플 JSON 데이터 리턴하는 간단한 API 작성법!
    Python 2024. 10. 9. 18:45
    반응형

    FastAPI는 Python 기반의 웹 프레임워크로, 높은 성능과 빠른 개발 속도를 자랑합니다. FastAPI를 사용하면 간단하고 직관적으로 RESTful API를 구현할 수 있습니다. 이번 글에서는 FastAPI로 제품 리스트를 JSON 파일 형식으로 리턴하는 API를 단계별로 작성하는 방법을 설명하겠습니다.

    1. FastAPI 소개

    FastAPI는 최신 Python 표준인 Python 타입 힌팅을 기반으로 한 비동기적 웹 프레임워크입니다. 간단한 코드로도 매우 빠르고 효율적인 API를 만들 수 있으며, 자동으로 Swagger 문서화도 제공해 개발자 경험을 크게 향상시킵니다.

     

    2. FastAPI 설치

    FastAPI를 설치하려면 pip 명령어를 사용합니다. FastAPI와 함께 ASGI 서버 역할을 하는 uvicorn도 설치해야 합니다.

    pip install fastapi uvicorn

    3. FastAPI 프로젝트 구조

    FastAPI 프로젝트의 기본 구조는 다음과 같이 매우 간단합니다.

    fastapi/ │
    ├── main.py # API 서버의 진입점 파일
    └── products.json # 제품 리스트를 저장할 JSON 파일 (선택 사항)

    4. FastAPI 기본 코드 작성

    먼저 main.py 파일을 생성하고, 기본적인 FastAPI 서버를 설정합니다.

     
     
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    def read_root():
        return {"message": "Welcome to the Products API"}

    이 코드는 FastAPI 애플리케이션의 루트 엔드포인트를 설정하고, 기본적인 메시지를 리턴합니다.

    5. 제품 리스트 데이터 준비

    제품 리스트는 간단한 Python의 리스트 또는 JSON 파일로 준비할 수 있습니다. 여기서는 products.json 파일을 정의해 보겠습니다.

    [
        {"id": 1, "name": "Laptop", "price": 1000},
        {"id": 2, "name": "Smartphone", "price": 700},
        {"id": 3, "name": "Tablet", "price": 400}
    ]
     

    이 리스트는 각각의 제품에 대한 id, name, price 정보를 포함하고 있습니다.

    6. 제품 리스트를 리턴하는 API 엔드포인트 생성

    6.1. GET 요청 처리

    이제 위에서 준비한 제품 리스트를 API에서 리턴할 수 있도록 GET 요청을 처리하는 엔드포인트를 추가합니다.

    class Product(BaseModel):
        id: int
        name: str
        price: float
    
    @app.get("/products", response_model=List[Product])
    def get_products():
        # JSON 파일 읽기
        with open("products.json", "r") as f:
            products = json.load(f)
        return products

    이 엔드포인트는 /products로 들어오는 GET 요청을 처리하며, products 리스트를 JSON 형태로 응답합니다.

    6.2. JSON 응답 포맷 정의

    FastAPI는 타입 힌트를 사용하여 응답 데이터를 자동으로 문서화하고, 데이터가 JSON으로 리턴되도록 처리해줍니다. 이를 위해 Pydantic 모델을 사용할 수 있습니다.

    위 코드에서는 Product 모델을 정의하여 제품 리스트의 각 항목이 어떤 형식인지 명시하고 있습니다. response_model을 설정함으로써 FastAPI는 이 모델에 맞춰 응답 데이터를 변환하고 검증합니다.
     
    아래는 전체 코드입니다.
    from pydantic import BaseModel
    from typing import List
    import json
    
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    class Product(BaseModel):
        id: int
        name: str
        price: float
    
    @app.get("/products", response_model=List[Product])
    def get_products():
        # JSON 파일 읽기
        with open("products.json", "r") as f:
            products = json.load(f)
        return products
    
    
    @app.get("/")
    def read_root():
        return {"message": "Welcome to the Products API"}

    7. API 실행 및 테스트

    이제 API를 실행하고 테스트해보겠습니다. uvicorn을 사용하여 FastAPI 서버를 실행합니다.

    uvicorn main:app --reload
     

    서버가 실행되면 http://127.0.0.1:8000/products로 접속하여 제품 리스트가 JSON 형식으로 응답되는지 확인할 수 있습니다.


    8. 결론

    이 글에서는 FastAPI를 사용하여 제품 리스트를 JSON 파일로 리턴하는 API를 만드는 방법을 살펴봤습니다. FastAPI의 간결하고 강력한 기능을 활용하여 빠르게 API를 구현할 수 있었으며, Pydantic을 통해 데이터 모델링과 검증도 쉽게 처리할 수 있었습니다. FastAPI의 비동기 기능을 사용하면 더 복잡한 작업도 효율적으로 처리할 수 있으니, 앞으로 더 확장된 기능을 활용해보시길 추천드립니다.

    반응형

    댓글

Designed by Tistory.