FastAPI를 사용하여 실시간 주문 서비스 개발하기

개요

실시간 주문 서비스는 많은 사용자가 동시에 주문을 할 수 있고, 주문 정보를 실시간으로 처리해야 하는 서비스입니다. FastAPI는 Python으로 빠르고 안전한 웹 애플리케이션을 개발하기에 적합한 프레임워크로, 실시간 주문 서비스를 개발하는데 활용될 수 있습니다.

필요한 패키지 설치

먼저, FastAPI를 사용하기 위해 필요한 패키지를 설치해야 합니다. 아래의 명령어를 사용하여 필요한 패키지를 설치해주세요.

pip install fastapi uvicorn

데이터베이스 연동

주문 정보를 저장하기 위해 데이터베이스에 연결해야 합니다. SQLite를 사용하여 간단한 데이터베이스를 생성하고, 이를 FastAPI와 연동하도록 하겠습니다.

import sqlite3

conn = sqlite3.connect('orders.db')
cursor = conn.cursor()

# 주문 정보를 저장하기 위한 테이블 생성
cursor.execute('''
    CREATE TABLE IF NOT EXISTS orders (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        product TEXT NOT NULL,
        quantity INTEGER NOT NULL,
        price REAL NOT NULL
    )
''')

API 엔드포인트 정의

FastAPI는 데코레이터를 사용하여 API 엔드포인트를 정의할 수 있습니다. 주문을 생성하고 조회하는 두 가지 엔드포인트를 정의해보겠습니다.

from fastapi import FastAPI

app = FastAPI()

@app.get("/orders")
def get_orders():
    # 주문 정보를 조회하는 로직
    ...

@app.post("/orders")
def create_order():
    # 주문 정보를 생성하는 로직
    ...

API 엔드포인트 구현

get_orderscreate_order 함수에 실제로 주문 조회와 생성에 대한 로직을 구현해야 합니다. 해당 로직은 실제 비즈니스 요구사항에 따라 달라질 수 있습니다. 예를 들어, 주문 조회 API에서는 데이터베이스에서 주문 정보를 조회하여 반환하도록 구현할 수 있습니다.

@app.get("/orders")
def get_orders():
    cursor.execute('SELECT * FROM orders')
    result = cursor.fetchall()
    orders = []
    for row in result:
        order = {
            'id': row[0],
            'product': row[1],
            'quantity': row[2],
            'price': row[3]
        }
        orders.append(order)
    return orders

주문 생성 API에서는 클라이언트로부터 받은 주문 정보를 데이터베이스에 저장하고, 생성된 주문을 반환하는 로직을 구현할 수 있습니다.

import json

@app.post("/orders")
def create_order(order_data: dict):
    product = order_data['product']
    quantity = order_data['quantity']
    price = order_data['price']
    
    # 주문 정보를 데이터베이스에 저장
    cursor.execute('INSERT INTO orders (product, quantity, price) VALUES (?, ?, ?)',
                   (product, quantity, price))
    conn.commit()
    
    # 생성된 주문 정보를 반환
    order_id = cursor.lastrowid
    order = {
        'id': order_id,
        'product': product,
        'quantity': quantity,
        'price': price
    }
    return order

서버 실행

FastAPI 애플리케이션을 실행하기 위해 아래의 명령어를 사용합니다.

uvicorn main:app --reload

브라우저에서 http://localhost:8000/orders로 접속하여 주문 조회 API에 접근하거나, POSTman과 같은 도구를 사용하여 주문 생성 API를 테스트할 수 있습니다.

마무리

위의 예시는 FastAPI를 사용하여 실시간 주문 서비스를 개발하는 간단한 예시입니다. FastAPI의 강력한 기능을 활용하여 비즈니스 요구사항에 맞는 실시간 주문 서비스를 개발할 수 있을 것입니다.

#FastAPI #실시간주문서비스