경로 매개변수는 리소스를 식별하기 위해 API 라우팅에 사용된다. 이 매개변수는 식벽자 역할을 하며 웹 애플리케이션이 추가 처리를 할 수 있도록 연결 고리가 되도록 한다.
앞서 만든 todo_list에서 하나의 todo 작업만 할 수 있는 라우트를 만들자
예제에서는 경로 매개변수가 todo_id
가 된다.
@todo_router.get("/todo/{todo_id}")
async def get_single_todo(todo_id: int) -> dict:
for todo in todo_list:
if todo.id == todo_id:
return {
"todo":todo
}
return {
"message":"Todo with supplied ID doesn't exist"
}
추가한 라우트를 테스트 해보자. (리액트에서 id 3을 출력하도록 코딩했다)
잘된다.
이제 Path 클래스를 추가해보자. Path는 FastAPI가 제공하는 클래스로, 라우트 함수에 있는 다른 인수와 경로 매개변수를 구분하는 역할을 한다. Path 클래스는 스웨거와 ReDoc 등으로 OpenAPI 기반 문서를 자동 생성할 때 라우트 관련 정보를 함께 문서화하도록 돕는다.
from fastapi import APIRouter, Path
...
async def get_single_todo(todo_id: int =Path(..., title="The ID of the todo to retrieve")) -> dict:
Path(..., kargs)
Path 클래스는 첫 인수로 None 또는 ... 을 받을 수 있는데, 첫 인수가 ...이면 경로 매개변수를 반드시 지정해야한다. gt, le와 같은 검증 기호를 사용해, 경로 매개변수에 사용된 값이 특정 범위에 있는 숫자인지 검증도 가능하다.
쿼리 매개변수는 선택 사항이며 보통 URL에서 ? 뒤에 온다. 제공된 쿼리를 기반으로 특정한 값을 반환하거나 요청을 필터링할 때 사용된다.
예시를 보자
async query_route(query: str = Query(None)):
return query