소개
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 공식 문서