클라이언트가 API를 호출할 때 담긴 데이터가 Request에 담깁니다.
import json
from fastapi import APIRouter, Request
router = APIRouter()
@router.post(
"/url",
...
)
async def mapping_endpoint(request: Request):
'''
Request는 await object이기 때문에 await request.form()으로 받아야 한다.
dict, list 타입으로 요청 form data를 확인할 수 있다.
'''
form_param = await request.form()
# _dict, _list 속성
print(f"dict to json => {json.dumps(form_param._dict, ensure_ascii=False)}")
...
- 외부 API를 사용할 때, SSR 구현을 위해 Jinja2Template 등을 사용할 때, 유용
- form data 형식을 읽어와 html에 넘겨줄 수 있다.
import json
from fastapi import APIRouter, Request
router = APIRouter()
@router.get(
"/url",
...
)
async def mapping_endpoint(request: Request):
# b_query_param = request.query_params # type: bytes
query_param = request.scope["query_string"].decode('utf-8') # type: str
query_params = query_param.split("&")
query_param_table = {}
for q in query_params:
k, v = q.split("=")
query_param_table[k] = v
print(f"query_param_table": {query_param_table})
...
- Request의 scope 속성에서 query_string을 Key로 조회하면 GET 요청의 query params를 확인할 수 있다.
'FastAPI tips' 카테고리의 다른 글
Jinja2 템플릿 활용 (0) | 2024.05.08 |
---|---|
Excel 다운로드 API (0) | 2024.05.08 |
Middleware 커스텀해서 사용하기 (0) | 2024.05.03 |
UploadFile, 이미지 form-data (0) | 2024.03.28 |