Pydantic 모델과 Post 활용

박준환·2021년 11월 2일
0

fast-API

목록 보기
3/8

실습 코드

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에서 새로운 리소스를 생성하여 서버로 데이터를 전송하는 행위를 하는 것을 말한다.

  • 위의 코드에 purchase 메소드를 보면 User 와 Product 클래스를 매개변수로 받아 각 클래스안에 있는 변수를 사용하여 user가 product를 구매에 대한 새로운 리소스를 생성하도록 하였다.

  • Post 실행과 결과

0개의 댓글

관련 채용 정보