FastAPI 02. 경로, 쿼리 매개변수 검증

2023. 1. 6. 22:31·Python/Python Web Framework

API를 만들게 되면 경로 매개변수나 쿼리 매개변수 검증이 필요한 경우가 있다. 예를 들어 경로 매개변수가 0 이상 정수값이어야 한다거나, 쿼리 매개변수의 문자열의 길이를 제한하는 등 검증을 한다. FastAPI에서는 Query, Path라는 편리한 방법을 제공한다.

쿼리 파라미터

@app.get("/items/")
async def read_item(q: str):
    return q

우선 다음과 같은 API에서 시작하자, 하나의 쿼리 파라미터 q를 입력받는 경우를 가정했을 때 상황을 구체화 해보자.

from fastAPI import FastAPI, Query

@app.get("/items/")
async def read_item(q: str = Query(defalut=None)):
    return q

함수에서 변수로만 선언하여 쿼리 파라미터임을 나타낼 수 있지만, 해당 변수를 q = Query() 형식으로 두어 쿼리 파라미터임을 확실하게 보여줄 수 있고, 추가적인 검증에도 사용할 수 있다. 예를 들어 위에서 default값을 활용하면 입력이 없을 때 기본값을 사용할지 정의할 수 있다. 또한 min_length, max_length 등을 활용하여 문자열 길이 검증에 사용할 수 있고, regex를 사용하면 정규식 매칭을 활용할 수 있다.

# required
q: str = Query()
q: str = Query(default=...)

또한 파라미터의 선택적 또는 필수적 요소로 설정할 수 있다. FastAPI 공식문서에서 더욱 다양한 방법을 제공하는데, 그중 필수 요소로 설정하는 방식을 다음과 같이 할 수 있다.

경로 파라미터

from fastAPI import FastAPI, Query, Path

@app.get("/items/{item_id}")
async def read_item(
    item_id: int = Path(gt=0, le=1000),
    q: str = Query(defalut=None),
):
    return {"item_id": item_id, "q": q}

경로 파라미터 역시 Path를 사용하여 명시적으로 활용할 수 있다. 숫자의 경우 gt, ge, lt, le를 사용하여 초과, 이상, 미만, 이하를 나타낼 수 있다.

요약

Query, Path 함수를 사용하여 명시적으로 표현 및 데이터 검증에 활용할 수 있다.

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

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

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
mintropy
FastAPI 02. 경로, 쿼리 매개변수 검증
상단으로

티스토리툴바