[FastAPI] Response Model

JeongChaeJin·2022년 7월 30일
0

Response Model

from fastapi import FastAPI
from pydantic import BaseModel, HttpUrl


app = FastAPI()


class User(BaseModel):
    name: str
    avatar_url: HttpUrl = "https://icotar.com/avatar/fastcampus.png?s=200"


class CreateUser(User):
    password: str


@app.post("/users", response_model=User, status_code=201)
def create_user(user: CreateUser):
    return user
  • 이전에는 password를 보내면 password를 그대로 보내줬다.
  • 위 처럼 코드를 짬으로서 RESTful 해질 수 있다.
    • 추가적으로 User를 상속받아서 처리하면 더 간편하다.
    • 추가적인 요소가 생기면 편하게 수정도 가능해진다.
  • 데코레이터 파라미터인 response_model을 통해 response에 대한 스키마를 정의해줄 수 있게된다.
  • status_code 파라미터를 통해서 200이아니라 Created를 뜻하는 201로 status code를 변경해줄 수 도 있다.
from fastapi import status
...

...

@app.post("/users", response_model=User, status_code=status.HTTP_201_CREATED)
def create_user(user: CreateUser):
    return user
  • 위의 status를 통해서도 숫자가 아니어도 쉽게 적용할 수 있다.
profile
OnePunchLotto

0개의 댓글