1. HTTP Request의 작은 요소 타입을 선언해서 사용
- path parameters
- Query paramenters
- Headers
- Cookies
이 방식을 사용하면 FastAPI는 해당 데이터의 유효성을 검사하고 변환하며 API에 대한 문서를 자동으로 생성한다. 그러나 Request에 직접 엑세스해야 하는 상황이 있다.
2. Request Object에 (통째로) 직접 접근해 사용 [공식문서]
FastAPI는 내부적으로 Starlette를 사용하고 있고, 필요하다면 FastAPI 대신 Starlette의 Request Object를 직접 사용할 수 있다.
- 주의사항: Request Object를 직접 가져오면, FastAPI에 의해 유효성 검사와 문서화가 되지 않는다.
from fastapi import FastAPI, Request
app = FastAPI()
@app.get("/items/{item_id}")
def read_root(item_id: str, request: Request):
client_host = request.client.host
return {"client_host": client_host, "item_id": item_id}
path operation function 내에서 클라이언트의 IP address/host를 가져오기 위해서는 request에 직접적으로 접근해야 한다.
path 연산 함수 파라미터에 Request 타입을 선언하면, FastAPI는 Request가 파라미터로 전달된걸 알게된다.
위 코드를 실행하고 브라우저에서 http://0.0.0.0/items/1로 접속하면 아래와 같은 결과를 볼 수 있다.
{"client_host":"0.0.0.0", "item_id":"1"}
Request object에 대한 자세한 내용은 여기서 읽을 수 있다.
'개발' 카테고리의 다른 글
[git clone 에러] Failed to connect to github.com port 443: Connection timed out (0) | 2024.03.21 |
---|---|
[JupyterLab] 주피터랩에 anaconda 가상환경 연결하기 (0) | 2024.02.08 |
FastAPI 공식문서 내용 정리 (0) | 2023.07.17 |
[Linux] chmod(change mode)로 접근 권한 지정하기 (0) | 2023.03.17 |
[Linux] 명령어 Is 옵션의 의미, ls -l 영역별 의미 (0) | 2023.03.17 |