개요
Tornado는 Python 기반의 웹 프레임워크로, 강력한 URL 라우팅 기능을 제공합니다. URL 라우팅은 클라이언트의 요청에 따라 어떤 핸들러로 연결할지 결정하는 중요한 기능입니다. 이번 블로그 포스트에서는 Tornado에서의 URL 라우팅에 대해 알아보겠습니다.
URL 라우팅 기본 설정
Tornado의 URL 라우팅은 Application 객체를 사용하여 구현합니다. Application 객체는 URL과 핸들러를 매핑하는 역할을 합니다. 다음은 URL 라우팅을 설정하는 기본 코드입니다.
import tornado.web
import tornado.ioloop
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, World!")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
위 예제에서는 /
URL에 대한 요청을 MainHandler
클래스로 라우팅하고 있습니다. 따라서 /
URL을 요청하면 “Hello, World!” 메시지가 반환됩니다.
정규식을 이용한 동적 URL 라우팅
Tornado의 URL 라우팅은 정규식 패턴을 사용하여 동적인 URL을 처리할 수도 있습니다. 예를 들어, 다음과 같이 정규식을 이용한 동적 URL 라우팅을 구현할 수 있습니다.
import tornado.web
import tornado.ioloop
class UserHandler(tornado.web.RequestHandler):
def get(self, user_id):
self.write(f"User ID: {user_id}")
def make_app():
return tornado.web.Application([
(r"/user/(\d+)", UserHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
위 예제에서는 /user/
다음에 오는 숫자를 user_id
로 받아서 처리하는 동적 URL 라우팅을 구현하고 있습니다. UserHandler
클래스의 get
메소드에서 user_id
를 사용하여 필요한 작업을 수행할 수 있습니다.
URL 인자 전달
Tornado의 URL 라우팅은 추가 인자를 전달할 수도 있습니다. 예를 들어, 다음과 같이 추가 인자를 전달하는 URL 라우팅을 구현할 수 있습니다.
import tornado.web
import tornado.ioloop
import tornado.escape
class GreetingHandler(tornado.web.RequestHandler):
def get(self, name):
message = self.get_argument("message", default="Hello", strip=False)
self.write(f"{message}, {tornado.escape.xhtml_escape(name)}!")
def make_app():
return tornado.web.Application([
(r"/greeting/([^/]+)", GreetingHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
위 예제에서는 /greeting/
다음에 오는 문자열을 name
으로 받아와서, message
라는 추가 인자를 전달하는 URL 라우팅을 구현하고 있습니다. GreetingHandler
클래스의 get
메소드에서 name
과 message
를 사용하여 필요한 작업을 수행할 수 있습니다.
결론
Tornado의 URL 라우팅은 강력하고 유연한 기능을 제공하여 웹 애플리케이션을 개발할 때 매우 유용합니다. 위의 예제 코드를 참고하여 Tornado에서의 URL 라우팅을 구현해보세요.