FastAPI 04. 바디의 예시 만들기

2023. 1. 16. 09:11·Python/Python Web Framework

OpenAPI를 지원하는 FastAPI를 더 잘 활용하는 방법은 스키마 활용이라고 생각한다. API를 작성하고, 간단하게 설명해 줄 수 있지만, API를 제대로 작성하고 또 제개도 활용학 위해서는 OpenAPI를 따라 스키마를 작성하는 것이 필요하다고 생각한다. 그렇게 한다면 입출력 예시뿐만 아니라 가능한 상태 코드 등을 쉽게 이해할 수 있다. 이는 API 개발뿐만 아니라 테스트나 유지 보수에도 도움 되는 작업이라고 생각한다.
FastAPI에서는 이를 달성하기 위해 Pydantic을 사용하는 방법과 FatsAPI에서 제공하는 Body()함수를 사용하는 방법을 제공한다.

Pydantic을 사용하는 방법

class Item(BaseModel):
    id: int
    name: str
    description: str | None = Field(default=None, max_length=300)
    price: int
    image: list[Image] | None = None

    class Config:
        schema_extra = {
            "example": {
                "name": "foo",
                "description": "baa",
                "price": 50,
            }
        }

Pydantic을 활용하는 첫 번째 방법은 모델 내부에 Config클래스를 생성, schema_extra변수를 선언, 예시를 딕셔너리로 작성하면 된다. 예시는 실제 검증에 사용되지 않지만, API 사용자는 이러한 예시로부터 API 활용에 대한 방법을 배울 수 있기 때문에 자세하게 작성하는 것이 좋다.

class Image(BaseModel):
    url: HttpUrl
    name: str = Field(example="some name")

또 다른 방법은 Field 함수를 사용하는 방법인데, 데이터 검증에도 사용할 수 있지만, 예시를 같이 작성할 수 있다.

Body()를 사용하는 방법

@app.post("/offers/")
async def offer(
    offer: Offer = Body(
        example={
            "name": "foo",
            "price": 50.5,
            "items": [
                {
                    "name": "foo1",
                    "description": "baa1",
                    "price": 30,
                },
                {
                    "name": "foo2",
                    "description": "baa2",
                    "price": 60,
                },
            ],
        }
    )
):
    return offer

FastAPI에서 제공하는 방법으로는 Body()함수를 사용하는 것이다. 예시를 생성하는 것은 바디뿐만 아니라 다른 매개 변수 등을 지정하는 함수, Path, Query, Header, Cookie, Form, File 함수에도 활용가능하다. FastAPI 공식문서를 살펴보면. OpenAPI 스키마를 더 자세하게 작성하는 방법을 공유하고 있다. 다른 프로젝트를 진행하면서 스키마를 상세하게 구현했던 적은 있지만, 이런 간단한 글에서는 넘어가는 것이 좋을 것 같다. 다음에 상세하게 다루는 일이 있으면 공유하도록 하겠다.

'Python > Python Web Framework' 카테고리의 다른 글

FastAPI 05. 반환 모델과 유사한 모델들 생성하기  (0) 2023.01.18
FastAPI 03. 리퀘스트 바디  (0) 2023.01.10
FastAPI 02. 경로, 쿼리 매개변수 검증  (0) 2023.01.06
FastAPI 01. 첫걸음  (0) 2023.01.04
Django DRF에서 serializer와 pydantic  (0) 2022.02.26
'Python/Python Web Framework' 카테고리의 다른 글
  • FastAPI 05. 반환 모델과 유사한 모델들 생성하기
  • FastAPI 03. 리퀘스트 바디
  • FastAPI 02. 경로, 쿼리 매개변수 검증
  • FastAPI 01. 첫걸음
mintropy
mintropy
민트로피의 하루하루 오늘보다 더 나은 내일
  • mintropy
    민트로피의 민트초코
    mintropy
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 생각 정리
        • 코딩테스트
        • SSAFY
      • 디지털 노트
        • Obsidian.md
        • Notion
      • CS
        • 알고리즘 & 문제풀이
        • AI
        • DB
        • 디자인패턴
      • Projects
      • Python
        • Python Web Framework
      • JavaScript
        • React.js
      • Docker
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    trie
    web framework
    조건분기
    project_zero
    django
    회고
    백준
    line
    markdown
    프로젝트
    DP
    union-find
    프로그래머스
    ps
    dfs
    게임이론
    코딩테스트
    Combinatorics
    알고리즘
    Python
    브루트포스
    파이썬
    bfs
    카카오
    DRF
    pydantic
    SSAFY
    그리디
    구현
    fastapi
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
mintropy
FastAPI 04. 바디의 예시 만들기
상단으로

티스토리툴바