PydanticモデルとPostの使用

1728 ワード

実習コード

class Profile(BaseModel):  #BaseModel을 상속받는 모델
    name: str
    email: str
    age: int

class Product(BaseModel):  #BaseModel을 상속받는 모델
    name: str
    price: int
    discount_percent : int
    discounted_price:float


class User(BaseModel):
    name:str
    email:str


app = FastAPI()

@app.post('/purchase')
def purchase(user:User,product:Product): #파라미터를 2개의 모델로 할 수 있음
    product.discounted_price = product.price - \
                               (product.price * product.discount_percent) / 100
    return {'user':user, 'product':product }

@app.post('/addproduct/{product_id}')
def addproduct(product:Product,product_id:int,category:str): #product는 모델, product_id는 path 파라미터, category는 쿼리파라미터
   product.discounted_price= product.price- \
                              (product.price*product.discount_percent)/100
   return {'product_id':product_id,'product':product,'category':category}


@app.get('/user/admin')
def main():
    return {'This is admin page'}

@app.post('/adduser')
def adduser(profile:Profile):
    return profile

Pydantic


  • Pydanticは、モデルを使用するときにPydanticのBaseModelを継承するヘルプパーティションのライブラリです.

  • 上記のコードでは、Profile、Product、UserクラスがBaseModelを継承し、各クラスの変数が含まれています.
  • Post


  • postとは、HTTPで新しいリソースを作成し、サーバにデータを転送する動作です.

  • 上記のコードでは、購入方法はユーザーと製品クラスをパラメータとし、各クラスの変数を使用して、ユーザーに製品を購入するために新しいリソースを生成させます.

  • Post運転と結果