티스토리 뷰

Dev/Python

[Fast Api] 3. Query Parameter

Alxndr 2021. 6. 12. 18:37

Query Parameters

Path Variable이 아닌 다른 함수 매개변수를 선언하면, 쿼리 매개변수로 자동 해석됩니다.

Query Parameter란 URL에서 ? 후에 나오는 값을 말합니다.
&로 구분되는 키-값 쌍의 집합

www.exmaple.com?size=10&page=1
size : 10/ page : 1 값입니다.

# 임시 데이터
mock_items_db = [
    {"item_name": "Foo"},
    {"item_name": "Bar"},
    {"item_name": "Baz"}
]

@app.get("/items")
async def read_items(skip: int = 0, limit: int = 10):
    return mock_items_db[skip : skip + limit]
  • Path Variable과 마찬가지로 타입 지정이 가능하며, 기본값을 지정할 수 있습니다.

(skip: int = 0, limit: int = 10)

Null 허용

QueryParameter 중 선택적으로 선언할 수 있습니다.

from typing import Optional

@app.get("/items/{item_id}")
async def get_item(item_id : str, q: Optional[str] = None):
    if q:
        return {"item_id": item_id, "q": q}
    return {"item_id": item_id}

Fast Api는 q = None이라는걸 선택적이라 인지합니다.
Optional은 Fast Api가 사용하는건 아니지만, 코드에서 오류를 찾아낼 수 있게 도와줍니다.

  • q를 보내지 않은 경우

  • q를 보낸 경우

Boolean Type

@app.get("/items/{item_id}")
async def get_item(item_id: str, q: Optional[str] = None, short: bool = False):
    item = {"item_id": item_id}
    if q:
        item.update({"q": q})
    if not short:
        item.update(
            {"description": "LOOOOOOONG Description."}
        )
    return item
    
  • Result 

예시로 아래 사진처럼 소개하는데 True 뜻을 가진 값은 True로 인식한다?

여러 경로 & 쿼리 매개변수

여러경로와 쿼리 매개변수를 동시에 선언해도 순서를 신경쓸 필요가 없습니다. Fast Api는 변수의 이름으로 감지합니다.

@app.get("/users/{user_id}/items/{item_id}")
async def read_user_item(
    user_id: int, item_id: str, q: Optional[str] = None, short: bool = False
):
    item = {"item_id": item_id, "owner_id": user_id}
    if q:
        item.update({"q": q})
    if not short:
        item.update(
            {"description": "This is an amazing item"}
        )
    return item

정리

Query Parameter 조건별

조건 방법
require item_id: str
nullable item_id: str = None
default value size: int = 10

이번 포스팅은 여기서 마무리하겠습니다.

 

모든 코드는 Github 에서 보실 수 있습니다.

틀린점과 개선할 점은 댓글로 알려주시면 감사하겠습니다.

'Dev > Python' 카테고리의 다른 글

[Fast Api] 2. Path Variable 사용해서 핸들러 매핑하기  (0) 2021.06.09
[Fast Api] 1. 처음 시작하기  (0) 2021.06.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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 28 29 30
글 보관함