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

我在 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 


12345678_0001
浏览 121回答 1
1回答

慕虎7371278

下面的代码将返回一个包含 URL 及其各自资源的元组列表:def get_all_routes(api):&nbsp; &nbsp; routes_list = []&nbsp; &nbsp; def get_children(node):&nbsp; &nbsp; &nbsp; &nbsp; if len(node.children):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for child_node in node.children:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get_children(child_node)&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; routes_list.append((node.uri_template, node.resource))&nbsp; &nbsp; [get_children(node) for node in api._router._roots]&nbsp; &nbsp; return routes_list输出[&nbsp; &nbsp; ('/v1/things', <v1.v1_app.ThingsResource object at 0x7f555186de10>),&nbsp;&nbsp; &nbsp; ('/v2/things', <v2.v2_app.ThingsResource object at 0x7f5551871470>),&nbsp;&nbsp; &nbsp; ('/v3/things/{name}', <v3.v3_app.ThingsResource object at 0x7f5551871ba8>)]我已经阅读了这个包并得出了这个,但是,我不知道任何会返回这个结果的内置方法。如果你不喜欢上面的功能,你可以通过扩展 API 类来实现类似的功能。我制作了一个用于对 Falcon 应用程序进行版本控制的 Github 存储库,您可以从中了解如何分离 URL 及其相关资源。Github 链接您可以拥有路由列表并通过扩展API 类添加它们URL 和资源将类似于:from v1.v1_app import thingsurls = [&nbsp; &nbsp; ('/things', things),]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python