728x90
반응형

헤더 매개변수를 Query , Path 그리고 Cookie 매개변수들과 같은 방식으로 정의할 수 있습니다.

 

Header 임포트

먼저 Header 를 임포트 합니다:

 

 

Header 매개변수 선언

Path , Query 그리고 Cookie 를 사용한 동일한 구조를 이용하여 헤더 매개변수를 선언합니다.

 

첫 번째 값은 기본값이며, 추가 유효성 검사 또는 어노테이션 매개변수를 전달할 수 있습니다:

 

 

기술 세부사항

HeaderPath , Query 그리고 Cookie 의 "자매" 클래스입니다. 이것 역시 동일한 공통 Param 클래스를 상속합니다.

그러나 Query , Path , Header , 그리고 다른 것들을 fastapi 에서 임포트 할 때, 그것들은 실제로 특별한 클래스를 반환하는 함수임을 기억하시기 바랍니다.

 

정보

헤더를 선언하기 위해서는, 반드시 Header 를 사용해야 하는데, 그렇지 않으면 해당 매개변수를 쿼리 매개변수로 해석하기 때문입니다.

 

자동 변환

HeaderPath , Query 그리고 Cookie 가 제공하는 것 외에 추가적인 기능이 조금 더 있습니다.

 

대부분의 표준 헤더는 "마이너스 기호"( - )라고도 하는, "하이픈" 문자로 구분됩니다.

 

그러나 파이썬에서 user-agent 와 같은 변수는 유효하지 않습니다.

 

따라서, 기본적으로, Header 는 매개변수 이름을 언더스코어( _ )에서 하이픈( - )으로 변환하여 헤더를 추출하고 기록합니다.

 

또한, HTTP 헤더는 대소문자를 구분하지 않으므로, ("snake_case"로 알려진) 표준 파이썬 스타일로 선언할 수 있습니다.

 

따라서, User_Agent 또는 이것과 유사하게 첫 문자를 대문자로 만들 필요 없이, 파이썬 코드에서 처럼 user_agent 로 사용할 수 있습니다.

 

만약 언더스코어가 하이픈으로 자동 변환되는 걸 비활성해야 할 어떤 이유가 있다면, Headerconvert_underscores 매개변수 값을

False 로 설정하시기 바랍니다:

 

 

경고

convert_underscoresFalse 로 설정하기 전에, 어떤 HTTP 프록시들과 서버들은 언더스코어가 포함된 헤더 사용을 허락하지 않는다는 것을 명심하시기 바랍니다.

 

중복 헤더

중복 헤더들을 수신할 수 있습니다. 즉, 다중값을 갖는 동일한 헤더를 의미합니다.

 

자료형 선언 속 리스트를 사용하여 이러한 케이스를 정의할 수 있습니다.

 

중복 헤더의 모든 값을 파이썬 list 로 수신합니다.

 

예를 들어, 두 번 이상 나타날 수 있는 X-Token 의 헤더를 선언하려면, 다음과 같이 작성합니다:

 

 

다음과 같은 두 개의 HTTP 헤더를 전송하여 경로 동작과 통신할 경우:

 

 

응답은 다음과 같습니다:

 

 

요약

Query , Path , Cookie 와 동일한 공통 패턴을 사용하는, Header 를 사용하여 헤더를 선언합니다.

 

그리고 변수의 언더스코어를 걱정하지 않으셔도 됩니다. FastAPI가 그것들을 변환할 것입니다.

 


원문

https://fastapi.tiangolo.com/tutorial/header-params/

 

Header Parameters - FastAPI

You can define Header parameters the same way you define Query, Path and Cookie parameters. First import Header: from typing import Optional from fastapi import FastAPI, Header app = FastAPI() @app.get("/items/") async def read_items(user_agent: Optional[s

fastapi.tiangolo.com

728x90
반응형

'FastAPI > Tutorial - User Guide' 카테고리의 다른 글

[ FastAPI ] 추가 모델  (0) 2021.09.20
[ FastAPI ] 응답 모델  (0) 2021.09.20
[ FastAPI ] 쿠키 매개변수  (0) 2021.09.19
[ FastAPI ] 추가 데이터 자료형  (0) 2021.09.19
[ FastAPI ] 요청 예시 데이터 선언  (0) 2021.09.19