Tornadao—接口与调用顺序

目录

  1. initialize()
  2. prepare()
  3. HTTP方法
  4. 调用顺序

  • initialize()


    对应每个请求的处理类Handler在构造⼀个实例后⾸先执⾏initialize()⽅法。将路由
    映射中的第三个字典型参数会作为该⽅法的命名参数传递,如:
    
    class ProfileHandler(RequestHandler):
     def initialize(self, database):
     self.database = database
     def get(self):
     ...
    app = Application([
     (r'/user/(.*)', ProfileHandler, dict(database=database)),
     ])
    
    此⽅法通常⽤来初始化参数(对象属性),
  • prepare()


    import json
    class IndexHandler(RequestHandler):
     def prepare(self):
     if self.request.headers.get("ContentType").startswith("application/json"):
     self.json_dict = json.loads(self.request.body)
     else:
     self.json_dict = None
     def post(self):
     if self.json_dict:
     for key, value in self.json_dict.items():
     self.write("<h3>%s</h3><p>%s</p>" % (key, value))
     def put(self):
     if self.json_dict:
     for key, value in self.json_dict.items():
     self.write("<h3>%s</h3><p>%s</p>" % (key, value))
  • HTTP方


  • 调用顺序


    class IndexHandler(RequestHandler):
     def initialize(self):
     print "调⽤了initialize()"
     def prepare(self):
     print "调⽤了prepare()"
     def set_default_headers(self):
     print "调⽤了set_default_headers()"
     def write_error(self, status_code, **kwargs):
     print "调⽤了write_error()"
     def get(self):
     print "调⽤了get()"
     def post(self):
     print "调⽤了post()"
     self.send_error(200) # 注意此出抛出了错误
     def on_finish(self):
     print "调⽤了on_finish()"
    
    在正常情况未抛出错误时,调⽤顺序为:
    1. set_defautl_headers()
    2. initialize()
    3. prepare()
    4. HTTP⽅法
    5. on_finish()
    在有错误抛出时,调⽤顺序为:
    1. set_default_headers()
    2. initialize()
    3. prepare()
    4. HTTP⽅法
    5. set_default_headers()
    6. write_error()
    7. on_finish()
发布了258 篇原创文章 · 获赞 6 · 访问量 3536

猜你喜欢

转载自blog.csdn.net/piduocheng0577/article/details/105060594