tornado服务如何获取服务提供的所有链接和对应的post、get、delete方法

我有个tornado服务,我希望调用tornado的某个方法能获取当前服务提供的所有动态链接和对应的post、get、delete方法
即:

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web

from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        greeting = self.get_argument('greeting', 'Hello')
        self.write(greeting + ', friendly user!')
    def post(self):
        self.write('hello, friendly user!')   

if __name__ == "__main__":
    tornado.options.parse_command_line()
    app = tornado.web.Application(handlers=[(r"/index", IndexHandler)])
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()
    

即获得链接 /index 对应有get和post方法

谢谢!!

阅读 4.1k
1 个回答

具体不展开详细写了, 跑一下下面的代码片段就明白怎么做了 (tornado==4.5.1)

app = tornado.web.Application(handlers=[(r"/index", IndexHandler)])
for e in app.wildcard_router.rules:
    print(e.matcher.__dict__["_path"])
    # 在e.target.__dict__ 中查找get, post, delete方法
    print(e.target.__dict__)
    

图片描述

tornado==4.4.1, 可以用下面的方法

for h in app.handlers:
    for e in h[1]:
        print(e._path, e.handler_class)
        

自己看一下Application这个类的源码, 肯定能找到方法的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题