在 Tornado 中,操作 HTTP 请求和响应的头部(Headers)以及 URL 是很常见的需求。以下是一些基本的示例,演示如何在 Tornado 中进行这些操作。

操作 HTTP 请求头部

在 Tornado 中,你可以通过 self.request.headers 访问请求头部。以下是一个例子,演示如何获取和操作请求头:
import tornado.ioloop
import tornado.web

class HeaderHandler(tornado.web.RequestHandler):
    def get(self):
        # 获取 User-Agent 头
        user_agent = self.request.headers.get("User-Agent", "Unknown")
        self.write(f"User-Agent: {user_agent}")

        # 添加自定义头
        self.set_header("Custom-Header", "Custom Value")

if __name__ == "__main__":
    app = tornado.web.Application([
        (r'/', HeaderHandler),
    ])
    app.listen(8888)
    print("Server is running at http://localhost:8888")
    tornado.ioloop.IOLoop.current().start()

在这个例子中,通过 self.request.headers.get("User-Agent", "Unknown") 获取了请求头中的 User-Agent,并通过 self.set_header("Custom-Header", "Custom Value") 添加了一个自定义头。

操作 HTTP 响应头部

在 Tornado 中,你可以通过 self.set_header 方法设置响应头。以下是一个例子,演示如何设置响应头:
import tornado.ioloop
import tornado.web

class HeaderHandler(tornado.web.RequestHandler):
    def get(self):
        # 设置 Content-Type 头
        self.set_header("Content-Type", "text/html; charset=utf-8")

        self.write("Hello, Tornado!")

if __name__ == "__main__":
    app = tornado.web.Application([
        (r'/', HeaderHandler),
    ])
    app.listen(8888)
    print("Server is running at http://localhost:8888")
    tornado.ioloop.IOLoop.current().start()

在这个例子中,通过 self.set_header("Content-Type", "text/html; charset=utf-8") 设置了响应头中的 Content-Type。

操作 URL

在 Tornado 中,你可以通过 self.request.uri 或 self.request.path 访问请求的 URL。以下是一个例子,演示如何获取和操作 URL:
import tornado.ioloop
import tornado.web

class URLHandler(tornado.web.RequestHandler):
    def get(self):
        # 获取完整的 URL
        full_url = self.request.uri
        self.write(f"Full URL: {full_url}")

        # 获取路径部分
        path = self.request.path
        self.write(f"Path: {path}")

if __name__ == "__main__":
    app = tornado.web.Application([
        (r'/', URLHandler),
    ])
    app.listen(8888)
    print("Server is running at http://localhost:8888")
    tornado.ioloop.IOLoop.current().start()

在这个例子中,通过 self.request.uri 获取了完整的 URL,通过 self.request.path 获取了路径部分。

这些是一些基本的 Tornado 中操作 HTTP 请求头部和响应头部,以及 URL 的示例。具体的需求可能会涉及更多的细节和定制,Tornado 提供了灵活的 API 来满足这些需求。


转载请注明出处:http://www.zyzy.cn/article/detail/7433/Tornado