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

发布于 2022-09-06 04:44:35 字数 881 浏览 22 评论 0

我有个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方法

谢谢!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凝望流年 2022-09-13 04:44:35

具体不展开详细写了, 跑一下下面的代码片段就明白怎么做了 (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这个类的源码, 肯定能找到方法的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文