from fastapi import FastAPI

app = FastAPI()  # fastapi 클래스의 인스턴스(app) 생성

Path parameters with types

Query parameters

For example, in the URL: http://127.0.0.1:8000/items/?skip=0&limit=10

  1. required query parameters

  2. optional query parameters

    from typing import Union
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/items/{item_id}")
    async def read_item(item_id: str, q: Union[str, None] = None, short: bool = False):
        # type of q as query parameter is str or None (default: None)
        # Union == anyOf : 두가지 타입 지정 가능, 첫번째 타입은 두 번째 타입보다 좀 더 중요하고 명시하고 싶은 타입으로 선언
        # optional query parameter를 표현할 때 Union을 사용
        item = {"item_id": item_id}
        if q:
            item.update({"q": q})
        if not short:
            item.update(
                {"description": "This is an amazing item that has a long description"}
            )
        return item
    
  3. query parameters with default value ← optional

    from typing import Union
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/items/{item_id}")
    async def read_user_item(
        item_id: str, needy: str, skip: int = 0, limit: Union[int, None] = None
    ):
        item = {"item_id": item_id, "needy": needy, "skip": skip, "limit": limit}
        return item
    

String Validations for query parameter

참고: https://velog.io/@baeyuna97/FastAPI-Query-Parameters-and-String-Validations

Numeric Validations for path parameter