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를 통해서도 숫자가 아니어도 쉽게 적용할 수 있다.