パラメータを受け取って商品情報を返すAPIを作成します
ポイントは次の2つです。
data/products.py にまとめて保持するmain.py はそのデータを参照してレスポンスを返す(今回はDBなしの簡易版)プロジェクト直下に data フォルダを作り、その中に products.py を作成してください。
data/products.py
# data/products.py
# 今回は「DBの代わり」に Python の辞書でデータを保持します
PRODUCTS = {
1: {"id": 1, "name": "Apple", "price": 120, "stock": 30},
2: {"id": 2, "name": "Banana", "price": 80, "stock": 12},
3: {"id": 3, "name": "Orange", "price": 150, "stock": 0},
}
def get_product(product_id: int):
return PRODUCTS.get(product_id)
def list_products():
return list(PRODUCTS.values())
main.py から、先ほど作った data/products.py を読み込みます。
main.py
from fastapi import FastAPI, HTTPException
from data.products import get_product
app = FastAPI()
@app.get("/products/{product_id}")
def read_product(product_id: int):
product = get_product(product_id)
if product is None:
raise HTTPException(status_code=404, detail="Product not found")
return product
product_id: int により、FastAPIが自動で型変換・バリデーションしてくれますHTTPException で 404 を返します