zoukankan      html  css  js  c++  java
  • Tornado之请求与响应头

    Tornado之请求与响应头

    import tornado.ioloop
    import tornado.httpserver
    import tornado.web
    import tornado.options
    import json
    import time
    
    from tornado.options import options,define
    define("port",default=8080,help="run port",type=int)
    
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("我在下面!<br>")
            name = self.get_argument("name","none")
            self.write("这个是我:"+name)
    
    class HeaderHandler(tornado.web.RequestHandler):
        def get(self):
            self.write('set_header')
            self.set_header('aaa', '1111')         ###set_header 可以设置响应头,如果出现同一个响应头,会覆盖
            self.set_header('bbb', '2222')
            self.set_header('bbb', '3333')
    
    class AddHandler(tornado.web.RequestHandler):     ##add_header 可以向响应头里面添加信息,而且是可以出现相同信息
        def get(self):
            self.write('add_header')
            self.add_header('ccc', '3333')
            self.add_header('ccc', '4444')
    
    class CleanHandler(tornado.web.RequestHandler):      #  clear_header 可以撤销给定的响应头信息
        def get(self):
            self.write('clear_heander')
            self.add_header('abcd', '5555')
            self.add_header('abcd', '6666')
            self.clear_header('abcd')   #清除所有的abcd的响应头
    
    class SendHandler(tornado.web.RequestHandler):
        def get(self):
            self.write('send_error')
            # self.flush()
            # self.send_error(404)          ### send_error 可以将指定的 HTTP 错误码发送到浏览器
            '''
            使用 send_error 时需要注意:如果已经执行了 flush,则不能再执行 send_error,因此该方法将简单地终止响应
            如果输出已写入但尚未刷新,则将其丢弃并替换为错误页面
            '''
            def write_error(self, status_code, **kwargs):     # send_error  在其底层调用的是 write_error
                self.write('status_code: %s' % status_code)    #此处可以对write_error方法进行重写
    
    class NotFoundHandler(tornado.web.RequestHandler):
        def get(self, *args, **kwargs):
            self.send_error(404)
        def write_error(self, status_code, **kwargs):
            self.render('error_notfound.html')    #返回一个error_notfound.html页面
    
    class IndexHandler(tornado.web.RequestHandler):    #注意先后执行顺序
        def set_default_headers(self):
            print(' ---set_default_headers---:设置header')
        def initialize(self):
            print(' ---initialize---:初始化')
        def prepare(self):
            print(' ---prepare---:准备工作')
        def get(self):
            self.write(' ---get---:处理get请求'+'<br>')
        def post(self):
            self.write(' ---post---:处理post请求'+'<br>')
        def write_error(self, status_code, **kwargs):
            print(' ---write_error---:处理错误')
        def on_finish(self):
            print(' ---on_finish---:结束,释放资源')
    
    
    application = tornado.web.Application(
          handlers = [
              (r"/", MainHandler),
              (r"/set", HeaderHandler),
              (r"/add",AddHandler),
              (r"/set",AddHandler),
              (r"/clean",CleanHandler),
              (r"/send",SendHandler),
              (r"/index",IndexHandler),
              (r'/(.*)', NotFoundHandler),    #放到最后
    
          ],
          template_path = 'templates',
          debug=True
      )
    
    if __name__ =="__main__":
        tornado.options.parse_command_line()
        http_server=tornado.httpserver.HTTPServer(application)
        http_server.listen(options.port)
        tornado.ioloop.IOLoop.instance().start()
  • 相关阅读:
    python3 logging模块
    第二周作业购物车程序
    第一周作业-三级菜单
    第一周作业-模拟登陆
    python元组与购物车程序
    python之路-day1-while循环
    centos安装phpmyadmin
    第196天:js---调用函数的五种方式
    第195天:js---函数对象详解(call、apply)
    第194天:js---函数对象详解(arguments、length)
  • 原文地址:https://www.cnblogs.com/shuai06/p/12397530.html
Copyright © 2011-2022 走看看