본문 바로가기
FastAPI tips

Request에서 form-data, query-string 가져오기

by 스티브 십잡스 2024. 3. 28.

클라이언트가 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