본문 바로가기
[AWS-FRF]/ELB

[참고][AWS][FastAPI] 307 temporary redirect 해결 방법 (Python)

by METAVERSE STORY 2024. 9. 6.
반응형
728x170

 

 

 

## Vault 헬스체크 경로
(상태검사 307 발생시, 경로 설정 할것!!) 

vault health check path : /v1/sys/health

 

 

 

 

FastAPI로 API를 제작하고 테스트 하면서 

나는 분명히 한 번만 요청했는데 제대로 요청을 받았다는 200OK 응답이 나오기 전에

> 307 temporary redirect위 코드를 복사하려면 여기를 클릭하세요.

위와 같이 307 temporary redirect 라는 메세지가 한 번 나오고 나서 200OK가 나올 경우가 있습니다.

 

 문제의 원인은 본인의 코드에서 endpoint 설정하는 부분을 보면 알 수 있습니다.

@app.post(path="/api/v1/testAPI/", response_model=TestResponse)위 코드를 복사하려면 여기를 클릭하세요.

endpoint 마지막에 "/" (슬래쉬) 가 붙어 있을 경우 redirect 하도록 되어있기 때문에 발생합니다.

_starlette/routing.py:601_

        if scope["type"] == "http" and self.redirect_slashes:
            if not scope["path"].endswith("/"):
                redirect_scope = dict(scope)
                redirect_scope["path"] += "/"위 코드를 복사하려면 여기를 클릭하세요.

 

해결방법은 두 가지 입니다.

 

방법 1

본인의 코드에서 endpoint 마지막에 붙어있는 슬래쉬를 지워줍니다.

@app.post(path="/api/v1/testAPI/", response_model=TestResponse)
-> @app.post(path="/api/v1/testAPI", response_model=TestResponse)위 코드를 복사하려면 여기를 클릭하세요.

방법 2

바꿔야할 endpoint가 너무 많다면

app = FastAPI()
app.router.redirect_slashes = False위 코드를 복사하려면 여기를 클릭하세요.

app 을 생성한 다음 redirect_slashes를 False로 설정해주어 redirect 되지 않도록 하면됩니다.

 

 

 

출처 : [FastAPI] 307 temporary redirect 해결 방법 (Python) (tistory.com)

반응형
그리드형

댓글