반응형
FastAPI Data Validation
유데미 FastAPI 강의 스터디를 진행하면서 내용을 정리해본다.
- FastAPI - The Complete Course 2023 (Beginner + Advanced) (총 196강, 17시간)
- https://www.udemy.com/course/fastapi-the-complete-course/
Data Validation
Field를 이용해 min_length, max_length, gt, lt 등을 확용하여 validation 할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel, Field
from uuid import UUID
app = FastAPI()
class Book(BaseModel):
id: UUID
title: str = Field(min_length=1)
author: str = Field(min_length=1, max_length=100)
description: Optional[str] = Field(title="Description of the book",
max_length=100,
min_length=1)
rating: int = Field(gt=-1, lt=101)
BOOKS = []
@app.get("/")
async def read_all_books():
return BOOKS
@app.post("/")
async def create_book(book: Book):
BOOKS.append(book)
return book
|
cs |
BaseModel Configurations
Swagger 문서 내에 기본으로 스키마를 제공해줄 수 있다.
아래와 같이 BaseModel을 상속으로 받는 Book 클래스 내에 Config 클래스를 작성하면..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
class Book(BaseModel):
id: UUID
title: str = Field(min_length=1)
author: str = Field(min_length=1, max_length=100)
description: Optional[str] = Field(title="Description of the book",
max_length=100,
min_length=1)
rating: int = Field(gt=-1, lt=101)
class Config:
schema_extra = {
"example": {
"id": "fa9e694b-efb6-41b0-bdb6-606975d23290",
"title": "Computer Science",
"author": "hunk",
"description": "A very nice description of a book",
"rating": 70
}
}
|
cs |
Request Body에 아래와 같이 값이 기본으로 세팅된다.
반응형
'Web > FastAPI' 카테고리의 다른 글
FastAPI BaseModel (0) | 2022.12.31 |
---|