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 속성
    dict_param = form_param._dict
    print(f"dict to json => {json.dumps(dict_param, ensure_ascii=False)}")
    ...

 

추가적으로 scope 속성에서 GET 요청 시, query string을 읽는 방법도 있다.

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})
    ...

+ Recent posts