51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
from fastapi import APIRouter,Query,Request,Path,Query,Body,Form,File,UploadFile,HTTPException,Response
|
|
from pydantic import constr,Field,field_validator,BaseModel, EmailStr, HttpUrl, IPvAnyAddress, conint,model_validator
|
|
from typing import Annotated,Literal
|
|
|
|
from datetime import date, timedelta
|
|
import datetime
|
|
from decimal import Decimal
|
|
from time import time
|
|
from uuid import UUID
|
|
import json,os,logging
|
|
from hashlib import md5 # ①导入md5加密
|
|
from libplus.logpluslplus import Log
|
|
|
|
route = APIRouter(prefix="/wk0917",tags=["wk0917"])
|
|
|
|
products = [{"name":"a","price":123.9,"stock":2},{"name":"a","price":123.9,"stock":2},{"name":"a","price":123.9,"stock":2},]
|
|
class Product(BaseModel):
|
|
name:str
|
|
price:float
|
|
stock: int
|
|
|
|
@model_validator(mode='after') #
|
|
def check(self):
|
|
pnames = [p['name'] for p in products]
|
|
if self.name in pnames: raise HTTPException(status_code="409",detail="name duplicate")
|
|
return self
|
|
|
|
@route.get("/product")
|
|
def product(name:str):
|
|
for p in products:
|
|
if name == p["name"]: return p
|
|
else: return Response(status_code="409",content="not find!")
|
|
|
|
@route.post("/product")
|
|
def product(p: Product):
|
|
products.append(p.model_dump())
|
|
return p
|
|
|
|
|
|
orders = []
|
|
@route.get("/order")
|
|
def order(name:str):
|
|
return name
|
|
|
|
@route.post("/order")
|
|
def order(name:str):
|
|
orders.append(name)
|
|
return name
|
|
|
|
|