[파이썬] aiohttp 요청 파라미터 다루기

aiohttp는 Python에서 비동기 웹 클라이언트 및 서버를 개발하는 데 사용되는 강력한 모듈입니다. 이 모듈을 사용하면 HTTP 요청 및 응답을 다루고 처리할 수 있으며, 이 중에서도 요청 파라미터를 다루는 것은 매우 중요한 작업입니다. 이번 포스트에서는 aiohttp를 사용하여 파라미터를 어떻게 다루는지 알아보겠습니다.

Query 파라미터 처리하기

HTTP 요청에서 query 파라미터는 URL 끝에 “?” 기호와 함께 전달되는 변수이며, 키와 값의 쌍으로 구성됩니다. aiohttp에서는 URL.query 속성을 사용하여 쉽게 이 파라미터를 가져올 수 있습니다. 아래 예제 코드에서는 aiohttp에서 query 파라미터를 어떻게 처리하는지 보여줍니다.

from aiohttp import web

async def handle(request):
    name = request.query.get('name', 'World')
    response_text = f"Hello, {name}!"
    return web.Response(text=response_text)

app = web.Application()
app.router.add_get('/', handle)
web.run_app(app)

위 코드에서는 handle 함수에서 request.query.get() 메소드를 사용하여 name이라는 query 파라미터의 값을 가져옵니다. 만약 해당 query 파라미터가 없을 경우에는 기본값 'World'을 사용합니다. 그리고 web.Response를 사용하여 클라이언트에게 응답을 보냅니다.

POST 파라미터 처리하기

HTTP POST 요청에서는 데이터를 요청의 본문에 담아서 보냅니다. 이때 요청 데이터는 키와 값의 쌍으로 구성되며, aiohttp에서는 request.post() 메소드를 사용하여 POST 파라미터를 처리할 수 있습니다. 아래 예제 코드에서는 aiohttp를 사용하여 POST 파라미터를 어떻게 처리하는지 보여줍니다.

from aiohttp import web

async def handle(request):
    data = await request.post()
    name = data.get('name', 'World')
    response_text = f"Hello, {name}!"
    return web.Response(text=response_text)

app = web.Application()
app.router.add_post('/', handle)
web.run_app(app)

위 코드에서는 handle 함수에서 await request.post()를 사용하여 POST 데이터를 가져옵니다. 그리고 data.get() 메소드를 사용하여 name이라는 POST 파라미터의 값을 가져옵니다. 마찬가지로, 해당 파라미터가 없을 경우에는 기본값 'World'을 사용합니다.

경로 파라미터 처리하기

경로 파라미터는 URL의 일부로 전달되며, 키와 값의 쌍으로 구성됩니다. aiohttp에서는 경로 파라미터를 처리하기 위해 web.RouteTableDef 데코레이터에 {파라미터}를 사용하여 경로를 정의할 수 있습니다. 아래 예제 코드에서는 aiohttp를 사용하여 경로 파라미터를 어떻게 처리하는지 보여줍니다.

from aiohttp import web

routes = web.RouteTableDef()

@routes.get('/hello/{name}')
async def handle(request):
    name = request.match_info['name']
    response_text = f"Hello, {name}!"
    return web.Response(text=response_text)

app = web.Application()
app.add_routes(routes)
web.run_app(app)

위 코드에서는 web.RouteTableDef를 사용하여 경로를 정의합니다. 경로 내부에 {name}으로 정의된 부분은 경로 파라미터를 나타냅니다. handle 함수에서는 request.match_info를 사용하여 경로 파라미터의 값을 가져옵니다. 경로 파라미터의 키 'name'을 사용하여 값을 얻을 수 있습니다.

결론

aiohttp를 사용하여 파라미터를 다루는 방법에 대해 알아보았습니다. 이를 통해 aiohttp 웹 애플리케이션에서 클라이언트로부터 받은 요청의 파라미터를 손쉽게 처리할 수 있습니다. 이러한 요청 파라미터 처리는 웹 개발에서 매우 중요한 요소이므로, 이를 잘 이해하고 활용하는 것이 필요합니다.