> 백엔드 개발 > 파이썬 튜토리얼 > FastAPI에서 경로는 다르지만 경로 매개변수는 동일한 여러 API 엔드포인트를 어떻게 처리합니까?

FastAPI에서 경로는 다르지만 경로 매개변수는 동일한 여러 API 엔드포인트를 어떻게 처리합니까?

Susan Sarandon
풀어 주다: 2024-10-30 19:56:03
원래의
594명이 탐색했습니다.

How do I handle multiple API endpoints with different paths but the same path parameter in FastAPI?

FastAPI에서 경로는 다르지만 경로 매개변수는 동일한 여러 API 엔드포인트

FastAPI에서 경로는 다르지만 경로 매개변수는 동일한 API 엔드포인트 정의 엔드포인트를 순서대로 선언하면 달성할 수 있습니다. 그러나 공유 경로 매개변수가 있는 다른 엔드포인트가 트리거될 때 의도한 엔드포인트 대신 라우터에 선언된 첫 번째 엔드포인트가 호출되는 경우 일반적인 문제가 발생합니다.

이 문제는 FastAPI가 엔드포인트가 나타나는 순서대로 평가하기 때문에 발생합니다. 라우터에서. 결과적으로, 공유 경로 매개변수(/project/{project_id}/...)가 있는 엔드포인트가 먼저 정의되면 추가 경로 매개변수와 관계없이 먼저 평가되어 해당 경로에 대한 모든 요청을 처리하게 됩니다.

해결책:

이 문제를 해결하려면 고유한 경로 매개변수가 있는 엔드포인트가 공유 경로 매개변수가 있는 엔드포인트보다 먼저 선언되었는지 확인하세요. 이렇게 하면 제공된 특정 경로를 기반으로 올바른 엔드포인트가 트리거됩니다.

예를 들어 다음과 같이 수정된 라우터를 고려해 보세요.

<code class="python"># GET API Endpoint 2
@router.get("/project/details/{project_id}")
# ...

# GET API Endpoint 3
@router.get("/project/metadata/{project_id}")
# ...

# GET API Endpoint 1
@router.get("/project/{project_id}/{employee_id}")
# ...</code>
로그인 후 복사

이 업데이트된 라우터에서 고유 경로가 있는 엔드포인트는 매개변수(/project/details/{project_id} 및 /project/metadata/{project_id})가 먼저 선언됩니다. 결과적으로 이러한 엔드포인트가 트리거되면 해당 컨트롤러 메서드가 올바르게 실행되고 컨트롤러 실행이 일치하지 않는 문제가 해결됩니다.

위 내용은 FastAPI에서 경로는 다르지만 경로 매개변수는 동일한 여러 API 엔드포인트를 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿