# GET API Endpoint 1
@router.get("/project/{project_id}/{employee_id}")
async def method_one(project_id: str, employee_id: str, ...):
# ...
# GET API Endpoint 2
@router.get("/project/details/{project_id}")
async def method_two(project_id: str, ...):
# ...
# GET API Endpoint 3
@router.get("/project/metadata/{project_id}")
async def method_three(project_id: str, ...):
# ...
는 다른 경로를 가진 여러 API 엔드 포인트를 선언하지만 동일한 경로 매개 변수는 예상치 못한 경로 일치 행동으로 이어질 수 있습니다.
다음과 같은 경로를 고려하십시오. 예 :# API 엔드 포인트 1을 얻습니다 @router.get ( "/project/{project_id}/{Employee_id}") Async def method_one (project_id : str, Employee_id : str, ...) : # ... # API 엔드 포인트를 얻습니다 @router.get ( "/project/details/{project_id}") Async def method_two (project_id : str, ...) : # ... # API 엔드 포인트를 얻습니다 @router.get ( "/project/metadata/{project_id}") Async def method_three (project_id : str, ...) : # ...
이 시나리오에서 API 엔드 포인트 2와 3이 호출되면 엔드 포인트 1, 즉 메소드 _one ()에 정의 된 컨트롤러 메소드를 실행합니다. 이는 빠른 속도로 엔드 포인트를 순서대로 평가하는 데 기인합니다.
# GET API Endpoint 1
@router.get("/project/details/{project_id}")
async def method_two(project_id: str, ...):
# ...
# GET API Endpoint 2
@router.get("/project/metadata/{project_id}")
async def method_three(project_id: str, ...):
# ...
# GET API Endpoint 3
@router.get("/project/{project_id}/{employee_id}")
async def method_one(project_id: str, employee_id: str, ...):
# ...
적절한 경로 일치를 보장하려면 경로 특이성 순서대로 엔드 포인트를 선언해야합니다. 엔드 포인트가 순차적으로 평가되기 때문에보다 구체적인 경로를 가진 엔드 포인트는 먼저 선언되어야합니다.
위의 예에서/project/{project_id}/{Employee_id}의 엔드 포인트는/project/details/{project_id}의 엔드 포인트보다 더 구체적입니다. 따라서 올바른 선언 순서는 다음과 같습니다.
이 순서에 따라 종료 2와 3이 호출되면 해당 메소드 메소드 _two () 및 method_three ()가 의도 한대로 실행됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3