[파이썬] aiohttp 라우팅 설정하기

소개

aiohttp는 파이썬으로 작성된 비동기 웹 프레임워크입니다. 라우팅은 웹 애플리케이션에서 URL을 해당하는 핸들러 함수로 매핑해주는 역할을 합니다. 이번 블로그에서는 aiohttp를 사용하여 간단한 라우팅을 설정하는 방법에 대해 알아보겠습니다.

설치

pip install aiohttp

예제

다음은 aiohttp를 사용하여 /hello URL에 대한 요청을 처리하는 예제입니다.

import aiohttp
from aiohttp import web

async def handle(request):
    return web.Response(text="Hello, World!")

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

web.run_app(app)

위 예제에서는 handle() 함수가 /hello URL에 대한 요청을 처리합니다. 요청이 올 때마다 “Hello, World!” 메시지를 반환합니다. web.Response 객체를 사용하여 응답을 생성하고 반환합니다.

web.Application()을 호출하여 aiohttp 애플리케이션을 만들고, app.router.add_get() 메서드를 사용하여 URL과 핸들러 함수를 연결합니다. 이렇게 등록된 라우터 설정은 web.run_app() 메서드를 호출하여 서버를 실행시킬 때 사용됩니다.

URL 매개변수 사용하기

비슷한 URL 패턴에 대해 여러 핸들러를 등록해야 할 경우, URL 매개변수를 사용할 수 있습니다. 예를 들어, 다음과 같은 URL의 요청을 처리하는 핸들러 함수를 만들고 싶을 때:

/users/john
/users/alex
/users/emma

다음과 같이 코드를 작성할 수 있습니다.

async def handle_user(request):
    user_id = request.match_info['user_id']
    return web.Response(text=f"Hello, {user_id}!")

app.router.add_get('/users/{user_id}', handle_user)

위 예제에서는 /users/{user_id}{user_id} 부분이 URL 매개변수로 간주됩니다. handle_user() 함수 내에서는 request.match_info를 사용하여 URL 매개변수 값을 가져올 수 있습니다. 이렇게 얻은 값을 이용하여, 요청에 따른 다른 응답을 생성할 수 있습니다.

정적 파일 제공하기

aiohttp를 사용하면 정적 파일 (예: HTML, CSS, 이미지 파일)을 제공할 수도 있습니다. aiohttp.web.static()을 사용하여 정적 파일의 경로를 지정하면 됩니다.

예를 들어, /static 경로에 있는 파일들을 제공하려면 다음과 같이 코드를 작성할 수 있습니다.

app.router.add_static('/static', '/path/to/static/files')

위 예제에서는 /static 경로로 요청이 들어오면 /path/to/static/files 경로에 있는 파일을 찾아 제공합니다.

결론

이 블로그에서는 aiohttp를 사용하여 간단한 라우팅을 설정하는 방법에 대해 살펴보았습니다. aiohttp의 강력한 라우팅 기능을 활용하면 웹 애플리케이션 개발과 관리를 쉽고 효율적으로 할 수 있습니다. 추가적인 기능과 고급 사용법은 공식 aiohttp 문서를 참고하시기 바랍니다.

참고 문서: aiohttp 공식 문서