[파이썬] aiohttp 웹 서버의 정적 리소스 제공

이 포스트에서는 aiohttp를 사용하여 Python에서 정적 리소스를 제공하는 방법을 알아보겠습니다. aiohttp는 Python에서 비동기 웹 서버 및 클라이언트를 구축하기 위해 널리 사용되는 라이브러리입니다. 정적 리소스는 웹 서버에서 직접 제공되는 파일로, 예를 들어 HTML, CSS, JavaScript 파일 등이 해당됩니다.

aiohttp 설치하기

먼저 aiohttp를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다:

pip install aiohttp

aiohttp 웹 서버 만들기

다음은 aiohttp를 사용하여 간단한 웹 서버를 만드는 예제입니다. main.py라는 이름으로 파일을 만들고 아래의 코드를 추가합니다.

from aiohttp import web

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

app = web.Application()
app.add_routes([web.get('/', handle)])

if __name__ == '__main__':
    web.run_app(app)

위의 코드는 '/ ' 경로에 요청이 들어오면 Hello, World!라는 텍스트를 응답으로 반환하는 간단한 핸들러를 정의합니다. 웹 서버는 web.run_app(app)를 호출하여 실행됩니다.

정적 리소스 서비스 추가하기

이제 정적 리소스 서비스를 포함하여 위의 예제를 확장해 보겠습니다. main.py 파일을 업데이트하고 아래의 코드를 추가합니다.

from aiohttp import web

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

async def index(request):
    return web.FileResponse('index.html')

app = web.Application()
app.router.add_get('/', handle)
app.router.add_static('/static/', path='static/', name='static')
app.router.add_get('/index', index)

if __name__ == '__main__':
    web.run_app(app)

위의 코드에서 /static/ 경로로 접근하면 static/ 디렉토리에서 해당 파일을 찾아 클라이언트에 반환합니다. /index 경로로 접근하면 index.html 파일을 반환합니다.

실행하기

터미널에서 다음 명령어를 실행하여 서버를 시작할 수 있습니다.

python main.py

웹 브라우저에서 localhost:8080에 접속하면 “Hello, World!” 메시지와 함께 서버의 응답을 확인할 수 있습니다.

정적 리소스는 localhost:8080/static/ 경로를 사용하여 접근할 수 있습니다. 브라우저에서 localhost:8080/static/css/style.css를 열면 해당 CSS 파일을 확인할 수 있습니다.

정리

aiohttp를 사용하면 Python에서 간단하고 효율적인 웹 서버를 만들 수 있습니다. 정적 리소스 서비스를 추가함으로써 웹 애플리케이션을 더욱 풍부하게 만들 수 있습니다.