작성
·
40
0
docs나 redoc에서 확인하는 것은 숙지하였는데, api 개발자가 deprecated를 경고받으려면 문서뿐 아니라 response 자체에도 deprecated 되었다는 정보가 포함되어야 할 것 같습니다. header에 포함되어 있나요?
답변 1
0
안녕하세요 답변도우미입니다.
FastAPI에서 엔드포인트에 deprecated=True
옵션을 사용하면 OpenAPI 문서(예: Swagger UI, ReDoc)에는 해당 API가 더 이상 사용되지 않는다는 표시가 나타납니다.
하지만, 이 옵션은 실제 HTTP 응답에 deprecation 관련 헤더나 메시지를 자동으로 포함시키지는 않습니다.
즉, FastAPI는 deprecated 정보를 문서화 목적으로만 사용하며, 클라이언트에게 경고 메시지를 전달하려면 별도의 구현이 필요합니다.
예를 들어, 다음과 같이 FastAPI 엔드포인트에서 직접 응답 헤더를 추가할 수 있습니다:
from fastapi import FastAPI, Response
app = FastAPI()
@app.get("/old-endpoint", deprecated=True)
def old_endpoint(response: Response):
# HTTP 표준에 따른 Deprecation 및 Warning 헤더 추가
response.headers["Deprecation"] = "true" # 혹은 제거 예정일 등 구체적인 정보를 기입할 수 있음
response.headers["Warning"] = '299 - "Deprecated API, please use the new version"'
return {"message": "This endpoint is deprecated"}
위와 같이 구현하면, /old-endpoint
에 대한 응답에 Deprecation
과 Warning
헤더가 포함되어 클라이언트에게 deprecated 상태를 알릴 수 있습니다.
결론적으로, FastAPI의 deprecated=True
는 문서화용으로만 사용되며, 응답에 해당 정보를 포함시키려면 개발자가 별도로 헤더나 응답 본문에 추가하는 로직을 구현해야 합니다.
감사합니다.