[FastAPI] 유효성 검사 > IT 기술백서

IT 기술백서

직접 알아내거나 검색하기 귀찮아서 모아 둔 것

python | [FastAPI] 유효성 검사

본문

쿼리매개변수와 경로매개변수 Body요청 유효성검사의 차이점

 

쿼리매개변수: Query

경로매개변수: Path

Body 요청: Field

 

Query, Path, Field 의 사용법은 거의 다 동일하다.

 

형식: [Query | Path | Field](기본값, 유효성검사필드...)


1. 기본검사

[code]

from fastapi import FastAPI, Query

# from fastapi import Path # 경로 매개변수 검사용


app = FastAPI()


@app.get("/items/")

aysnc def read_items(q: Optional[str] = Query(None, min_length=10, max_length=50)):

    pass

[/code]



2. 정규식으로 검사

[code]

aysnc def read_items(q: Optional[str] = Query(None, regex="^fixedquery$")):

    pass

[/code]



3. required

    1) required 외에 다른 검사가 필요할 경우

[code]

async def read_items(q: Optional[str] = Query(..., min_length=3)):

    pass

[/code]


    2) required 만 필요할 경우

[code]

async def read_items(q: str):

    pass

[/code]



4. 쿼리매개변수를 List 로 받을 때

ex) /items/?q=foo&q=bar

    1) 매개변수가 선택사항일때

[code]

async def read_items(q: Optional[List[str]] = Query(None)):

    pass

[/code]


    2) 기본값을 List 로 할때

[code]

async def read_items(q: List[str] = Query(["foo", "bar"])):

    pass

[/code]



5. 매개변수에 문서를 위한 메타데이터 추가

# title, description

# deprecated=True: 더 이상 사용되지 않는 매개변수 표시

[code]

async def read_items(q: Optional[str] = Query(None, title="Query String", description="This is Query String", min_length=3)):

    pass

[/code]

 

 

6. Body 유효성 검사 예

데이터 모델에 Field 로 선언한다.

[code]

class Item(BaseModel):

    name:str

    desc: Optional[str] = Field(None, title="item description", min_length=3) # 선택

    price: float = Field(..., gt=0, description="This is price") # 필수, 0보다 커야 함

    tax: Optional[float] = None # 선택

 

async def itme(item_id: int, item:Item):

    return {

        "item_id": item_id,

        "item": item

    }

[/code] 

댓글 0개

등록된 댓글이 없습니다.

Menu