FastAPI-RESTful API设计(二)

2023-05-07 21:33:39 浏览数 (3)

创建路由

接下来,我们将创建 API 的路由。在此示例中,我们将使用 FastAPI 来创建路由。在 main.py 文件中添加以下内容:

代码语言:javascript复制
from fastapi import FastAPI, HTTPException
from typing import List
from models import Product, Order, OrderItem

app = FastAPI()

# Mock data
products = [
    Product(id=1, name="Product 1", description="Description 1", price=9.99, image_url="https://example.com/product1.png"),
    Product(id=2, name="Product 2", description="Description 2", price=19.99),
    Product(id=3, name="Product 3", price=29.99)
]
orders = []

# Product routes
@app.get("/products")
async def get_products() -> List[Product]:
    return products

@app.get("/products/{product_id}")
async def get_product(product_id: int) -> Product:
    for product in products:
        if product.id == product_id:
            return product
    raise HTTPException(status_code=404, detail="Product not found")

# Order routes
@app.post("/orders")
async def create_order(items: List[OrderItem]) -> Order:
    order_id = len(orders)   1
    order = Order(id=order_id, items=items)
    orders.append(order)
    return order

@app.get("/orders")
async def get_orders() -> List[Order]:
    return orders

@app.get("/orders/{order_id}")
async def get_order(order_id: int) -> Order:
    for order in orders:
        if order.id == order_id:
            return order
    raise HTTPException(status_code=404, detail="Order not found")

在上面的代码中,我们使用 FastAPI 来创建了一组简单的路由。我们的 API 允许客户端获取产品列表、获取单个产品、创建订单以及获取订单列表和单个订单。

我们使用了一些简单的模拟数据,以便测试我们的 API。在实际生产环境中,您需要使用数据库或其他持久化存储机制来存储产品和订单数据。

0 人点赞