为了账号安全,请及时绑定邮箱和手机立即绑定

获取 Falcon 应用程序中定义的所有路线的列表

获取 Falcon 应用程序中定义的所有路线的列表

12345678_0001 2021-09-02 14:55:07
我在 Falcon 应用程序中有 RESTful 路由,定义如下简化代码。我的问题是如何使用映射处理程序获取所有路由的列表?我的谷歌搜索结果几乎没有帮助 -这里为 Flask 应用程序解决了一个类似的问题,但没有关于 Falcon 的页面。api = falcon.API(middleware=middleware)api.add_route('/v1/model_names1', SomeHandlerMappingResource1())api.add_route('/v1/model_names2', SomeHandlerMappingResource2())class SomeHandlerMappingResource1:    def on_get(self, req, resp):        pass # some biz logic of GET method    def on_post(self, req, resp):        pass # some biz logic of POST method    # etc.class SomeHandlerMappingResource2:    pass # similar to handler resource 1 above 
查看完整描述

1 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

下面的代码将返回一个包含 URL 及其各自资源的元组列表:


def get_all_routes(api):

    routes_list = []


    def get_children(node):

        if len(node.children):

            for child_node in node.children:

                get_children(child_node)

        else:

            routes_list.append((node.uri_template, node.resource))

    [get_children(node) for node in api._router._roots]

    return routes_list

输出

[

    ('/v1/things', <v1.v1_app.ThingsResource object at 0x7f555186de10>), 

    ('/v2/things', <v2.v2_app.ThingsResource object at 0x7f5551871470>), 

    ('/v3/things/{name}', <v3.v3_app.ThingsResource object at 0x7f5551871ba8>)

]

我已经阅读了这个包并得出了这个,但是,我不知道任何会返回这个结果的内置方法。


如果你不喜欢上面的功能,你可以通过扩展 API 类来实现类似的功能。


我制作了一个用于对 Falcon 应用程序进行版本控制的 Github 存储库,您可以从中了解如何分离 URL 及其相关资源。Github 链接


您可以拥有路由列表并通过扩展API 类添加它们


URL 和资源将类似于:


from v1.v1_app import things


urls = [

    ('/things', things),

]


查看完整回答
反对 回复 2021-09-02
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号