콘텐츠로 이동

응답 헤더

Response 매개변수 사용하기

여러분은 경로 작동 함수에서 Response 타입의 매개변수를 선언할 수 있습니다 (쿠키와 같이 사용할 수 있습니다).

그런 다음, 여러분은 해당 임시 응답 객체에서 헤더를 설정할 수 있습니다.

from fastapi import FastAPI, Response

app = FastAPI()


@app.get("/headers-and-object/")
def get_headers(response: Response):
    response.headers["X-Cat-Dog"] = "alone in the world"
    return {"message": "Hello World"}

그 후, 일반적으로 사용하듯이 필요한 객체(dict, 데이터베이스 모델 등)를 반환할 수 있습니다.

response_model을 선언한 경우, 반환한 객체를 필터링하고 변환하는 데 여전히 사용됩니다.

FastAPI는 해당 임시 응답에서 헤더(쿠키와 상태 코드도 포함)를 추출하여, 여러분이 반환한 값을 포함하는 최종 응답에 response_model로 필터링된 값을 넣습니다.

또한, 종속성에서 Response 매개변수를 선언하고 그 안에서 헤더(및 쿠키)를 설정할 수 있습니다.

Response 직접 반환하기

Response를 직접 반환할 때에도 헤더를 추가할 수 있습니다.

응답을 직접 반환하기에서 설명한 대로 응답을 생성하고, 헤더를 추가 매개변수로 전달하세요.

from fastapi import FastAPI
from fastapi.responses import JSONResponse

app = FastAPI()


@app.get("/headers/")
def get_headers():
    content = {"message": "Hello World"}
    headers = {"X-Cat-Dog": "alone in the world", "Content-Language": "en-US"}
    return JSONResponse(content=content, headers=headers)

기술적 세부사항

from starlette.responses import Responsefrom starlette.responses import JSONResponse를 사용할 수도 있습니다.

FastAPIstarlette.responsesfastapi.responses로 개발자의 편의를 위해 직접 제공하지만, 대부분의 응답은 Starlette에서 직접 제공됩니다.

그리고 Response는 헤더와 쿠키를 설정하는 데 자주 사용될 수 있으므로, FastAPIfastapi.Response로도 이를 제공합니다.

커스텀 헤더

‘X-’ 접두어를 사용하여 커스텀 사설 헤더를 추가할 수 있습니다.

하지만, 여러분이 브라우저에서 클라이언트가 볼 수 있기를 원하는 커스텀 헤더가 있는 경우, CORS 설정에 이를 추가해야 합니다(CORS (Cross-Origin Resource Sharing)에서 자세히 알아보세요). expose_headers 매개변수를 사용하여 Starlette의 CORS 설명서에 문서화된 대로 설정할 수 있습니다.