경로 변수는 URL의 일부분으로, 특정 리소스를 지정하는데 사용됩니다. FastAPI에서 경로 변수를 함수의 인자로 전달하면, 해당 변수는 자동으로 URL 경로의 일부로 인식됩니다.
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
위 예제에서 {item_id}는 경로 변수로, URL에서 /items/1과 같이 접근하면 item_id가 1으로 설정되어 반환됩니다.
쿼리 매개변수는 URL의 ? 이후에 위치하며, 키-값 쌍으로 제공됩니다. FastAPI에서는 함수의 인자를 통해 쿼리 매개변수를 쉽게 처리할 수 있습니다.
@app.get("/items/")
async def read_items(required_query: int):
return {"required_query": required_query}
위 코드에서 required_query는 필수 쿼리 매개변수로 설정됩니다. 매개변수 없이 요청을 보내면 에러가 발생합니다.
pythonCopy code
@app.get("/items/default/")
async def read_items_with_default(optional_query: int = 5):
return {"optional_query": optional_query}
optional_query에 기본값 5를 제공하여, 요청 시 해당 매개변수를 생략할 수 있습니다. 매개변수가 제공되지 않으면 기본값 5가 사용됩니다.
pythonCopy code
from typing import Optional
@app.get("/items/optional/")
async def read_optional_items(optional_query: int | None = None):
if optional_query:
return {"optional_query": optional_query}
return {"message": "No query parameter provided"}
optional_query 매개변수는 선택적으로 제공될 수 있으며, 제공되지 않을 경우 None을 기본값으로 사용합니다. 이를 통해 매개변수의 존재 유무에 따라 다른 처리를 수행할 수 있습니다.