检查模块¶
此模块可用于检查Falcon应用程序,以获取有关其注册路由、中间件对象、静态路由、接收器和错误处理程序的信息。可以使用 inspect_app()
功能。附加功能可用于检查应用程序的特定方面。
A falcon-inspect-app
也可以使用CLI脚本;它使用inspect模块打印应用程序的字符串表示,如下所示:
# my_module exposes the application as a variable named "app"
$ falcon-inspect-app my_module:app
Falcon App (WSGI)
• Routes:
⇒ /foo - MyResponder:
├── DELETE - on_delete
├── GET - on_get
└── POST - on_post
⇒ /foo/{id} - MyResponder:
├── DELETE - on_delete_id
├── GET - on_get_id
└── POST - on_post_id
⇒ /bar - OtherResponder:
├── DELETE - on_delete_id
├── GET - on_get_id
└── POST - on_post_id
• Middleware (Middleware are independent):
→ MyMiddleware.process_request
→ OtherMiddleware.process_request
↣ MyMiddleware.process_resource
↣ OtherMiddleware.process_resource
├── Process route responder
↢ OtherMiddleware.process_response
↢ CORSMiddleware.process_response
• Static routes:
↦ /tests/ /path/to/tests [/path/to/test/index.html]
↦ /falcon/ /path/to/falcon
• Sinks:
⇥ /sink_cls SinkClass
⇥ /sink_fn sinkFn
• Error handlers:
⇜ RuntimeError my_runtime_handler
上面的例子说明了如何 falcon-inspect-app
只输出 AppInfo.to_string()
方法。实际上,这里有一个简单的脚本,它返回与 falcon-inspect-app
命令:
from falcon import inspect
from my_module import app
app_info = inspect.inspect_app(app)
# Equivalent to print(app_info.to_string())
print(app_info)
更详细的应用程序描述可以通过传递获得 verbose=True
到 AppInfo.to_string()
,而框架添加的默认路由可以通过传递来包含 internal=True
. 这个 falcon-inspect-app
命令支持 --verbose
和 --internal
用于启用这些选项的标志。
使用Inspect函数¶
inspect函数返回的值是包含从应用程序收集的相关信息的类实例。这些对象有助于以编程方式使用收集的数据。
为了支持对使用自定义路由器的应用程序的检查,该模块提供了一个 register_router()
函数为自定义路由器类注册处理程序函数。违约检查 CompiledRouter
类由 inspect_compiled_router()
功能。
返回的信息类可以使用visitor模式进行探索。要创建类的字符串表示形式 StringVisitor
使用访客。这个类在调用时自动实例化 str()
在实例上或在使用 to_string()
方法。
自定义访问者实现可以子类 InspectVisitor
并使用 InspectVisitor.process()
方法访问班级。
检查功能参考¶
本模块定义了以下检查功能。
- falcon.inspect.inspect_app(app: falcon.app.App) falcon.inspect.AppInfo ¶
检查应用程序。
- 参数
app (falcon.App) -- 要检查的应用程序。两者都适用
falcon.App
和falcon.asgi.App
。- 返回
有关应用程序的信息。打电话
to_string()
以获得一个对人类友好的表达方式的结果。- 返回类型
- falcon.inspect.inspect_routes(app: falcon.app.App) List[falcon.inspect.RouteInfo] ¶
检查应用程序的路由。
- 参数
app (falcon.App) -- 要检查的应用程序。两者都适用
falcon.App
和falcon.asgi.App
。- 返回
应用程序的路由描述列表。
- 返回类型
List[RouteInfo]
- falcon.inspect.inspect_middleware(app: falcon.app.App) falcon.inspect.MiddlewareInfo ¶
检查应用程序的中间件组件。
- 参数
app (falcon.App) -- 要检查的应用程序。两者都适用
falcon.App
和falcon.asgi.App
。- 返回
有关应用程序的中间件组件的信息。
- 返回类型
- falcon.inspect.inspect_static_routes(app: falcon.app.App) List[falcon.inspect.StaticRouteInfo] ¶
检查应用程序的静电路由。
- 参数
app (falcon.App) -- 要检查的应用程序。两者都适用
falcon.App
和falcon.asgi.App
。- 返回
已添加到应用程序中的静电路由列表。
- 返回类型
List[StaticRouteInfo]
- falcon.inspect.inspect_sinks(app: falcon.app.App) List[falcon.inspect.SinkInfo] ¶
检查应用程序的接收器。
- 参数
app (falcon.App) -- 要检查的应用程序。两者都适用
falcon.App
和falcon.asgi.App
。- 返回
应用程序使用的接收器列表。
- 返回类型
List[SinkInfo]
- falcon.inspect.inspect_error_handlers(app: falcon.app.App) List[falcon.inspect.ErrorHandlerInfo] ¶
检查应用程序的错误处理程序。
- 参数
app (falcon.App) -- 要检查的应用程序。两者都适用
falcon.App
和falcon.asgi.App
。- 返回
应用程序使用的错误处理程序列表。
- 返回类型
List[ErrorHandlerInfo]
路由器检查¶
进路检查启用以下功能。
- falcon.inspect.register_router(router_class)¶
注册函数以检查特定路由器。
此修饰符为自定义路由器类注册一个新函数,以便可以使用函数进行检查
inspect_routes()
。检查函数获取应用程序使用的路由器实例,并返回RouteInfo
。例如:@register_router(MyRouterClass) def inspect_my_router(router): return [RouteInfo('foo', 'bar', '/path/to/foo.py:42', [])]
- 参数
router_class (Type) -- 要注册的路由器类。如果已经注册,则会引发错误。
- falcon.inspect.inspect_compiled_router(router: falcon.routing.compiled.CompiledRouter) List[falcon.inspect.RouteInfo] ¶
漫游……的实例
CompiledRouter
返回已定义路由的列表。CompiledRouter的默认路由检查器。
- 参数
router (CompiledRouter) -- 要检查的路由器。
- 返回
一份名单
RouteInfo
。- 返回类型
List[RouteInfo]
信息类¶
inspect函数返回的信息由这些类表示。
- class falcon.inspect.AppInfo(routes: List[falcon.inspect.RouteInfo], middleware: falcon.inspect.MiddlewareInfo, static_routes: List[falcon.inspect.StaticRouteInfo], sinks: List[falcon.inspect.SinkInfo], error_handlers: List[falcon.inspect.ErrorHandlerInfo], asgi: bool)¶
描述应用程序。
- 参数
routes (List[RouteInfo]) -- 应用程序的路由。
middleware (MiddlewareInfo) -- 应用程序中的中间件信息。
static_routes (List[StaticRouteInfo]) -- 此应用程序的静电路由。
sinks (List[SinkInfo]) -- 此应用程序的接收器。
error_handlers (List[ErrorHandlerInfo]) -- 此应用程序的错误处理程序。
asgi (bool) -- 这是否为ASGI应用程序。
- class falcon.inspect.RouteInfo(path: unicode, class_name: unicode, source_info: unicode, methods: List[falcon.inspect.RouteMethodInfo])¶
描述了一条路由。
- 参数
path (str) -- 此路由的路径。
class_name (str) -- 此路由的响应方的类名。
source_info (str) -- 定义此响应器的源路径。
methods (List[RouteMethodInfo]) -- 路由中定义的方法列表。
- class falcon.inspect.RouteMethodInfo(method: unicode, source_info: unicode, function_name: unicode, internal: bool)¶
描述一种响应器方法。
- 参数
- suffix¶
此路由函数的后缀。当函数没有后缀时,它被设置为空字符串。
- 类型
STR
- class falcon.inspect.MiddlewareInfo(middleware_tree: falcon.inspect.MiddlewareTreeInfo, middleware_classes: List[falcon.inspect.MiddlewareClassInfo], independent: bool)¶
描述应用程序的中间件。
- 参数
middlewareTree (MiddlewareTreeInfo) -- 应用程序的中间件树。
middlewareClasses (List[MiddlewareClassInfo]) -- 应用程序的中间件类。
independent (bool) -- 中间件组件是否独立执行。
- independent_text¶
从 independent Arg.
- 类型
STR
- class falcon.inspect.MiddlewareTreeInfo(request: List[falcon.inspect.MiddlewareTreeItemInfo], resource: List[falcon.inspect.MiddlewareTreeItemInfo], response: List[falcon.inspect.MiddlewareTreeItemInfo])¶
描述应用程序使用的中间件方法。
- 参数
request (List[MiddlewareTreeItemInfo]) -- 这个 process_request 方法。
resource (List[MiddlewareTreeItemInfo]) -- 这个 process_resource 方法。
response (List[MiddlewareTreeItemInfo]) -- 这个 process_response 方法。
- class falcon.inspect.MiddlewareClassInfo(name: unicode, source_info: unicode, methods: List[falcon.inspect.MiddlewareMethodInfo])¶
描述中间件类。
- 参数
name (str) -- 中间件类的名称。
source_info (str) -- 定义中间件的源路径。
methods (List[MiddlewareMethodInfo]) -- 中间件类定义的方法列表。
- class falcon.inspect.MiddlewareTreeItemInfo(name: unicode, class_name: unicode)¶
描述中间件树条目。
- class falcon.inspect.MiddlewareMethodInfo(function_name: unicode, source_info: unicode)¶
描述了一种中间件方法。
- class falcon.inspect.StaticRouteInfo(prefix: unicode, directory: unicode, fallback_filename: Optional[str])¶
描述了一条静电路由。
- class falcon.inspect.SinkInfo(prefix: unicode, name: unicode, source_info: unicode)¶
描述一个接收器。
访客课程¶
下面的访问者用于遍历信息类。
- class falcon.inspect.InspectVisitor¶
类的基本访问器类,该基访问器类实现 process 方法。
子类必须实现
visit_<name>
每个支持的类的方法。- process(instance: falcon.inspect._Traversable)¶
通过调用适当的访问方法来处理实例。
使用 __visit_name__ 属性的属性。 instance 获取要使用的方法。
- 参数
instance (_Traversable) -- 要处理的实例。
- class falcon.inspect.StringVisitor(verbose=False, internal=False, name='')¶
返回INFO类的字符串表示形式的访问器。
通过调用
to_string()
在信息课上。它也可以通过调用StringVisitor.process(info_instance)
。