检查模块¶
此模块可用于检查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: App) AppInfo [源代码]¶
检查应用程序。
- 参数:
app (falcon.App) -- 要检查的应用程序。两者都适用
falcon.App
和falcon.asgi.App
。- 返回:
有关应用程序的信息。打电话
to_string()
以获得一个对人类友好的表达方式的结果。- 返回类型:
- falcon.inspect.inspect_routes(app: App) List[RouteInfo] [源代码]¶
检查应用程序的路由。
- 参数:
app (falcon.App) -- 要检查的应用程序。两者都适用
falcon.App
和falcon.asgi.App
。- 返回:
应用程序的路由描述列表。
- 返回类型:
List[RouteInfo]
- falcon.inspect.inspect_middleware(app: App) MiddlewareInfo [源代码]¶
检查应用程序的中间件组件。
- 参数:
app (falcon.App) -- 要检查的应用程序。两者都适用
falcon.App
和falcon.asgi.App
。- 返回:
有关应用程序的中间件组件的信息。
- 返回类型:
- falcon.inspect.inspect_static_routes(app: App) List[StaticRouteInfo] [源代码]¶
检查应用程序的静电路由。
- 参数:
app (falcon.App) -- 要检查的应用程序。两者都适用
falcon.App
和falcon.asgi.App
。- 返回:
已添加到应用程序中的静电路由列表。
- 返回类型:
List[StaticRouteInfo]
- falcon.inspect.inspect_sinks(app: App) List[SinkInfo] [源代码]¶
检查应用程序的接收器。
- 参数:
app (falcon.App) -- 要检查的应用程序。两者都适用
falcon.App
和falcon.asgi.App
。- 返回:
应用程序使用的接收器列表。
- 返回类型:
List[SinkInfo]
- falcon.inspect.inspect_error_handlers(app: App) List[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: CompiledRouter) List[RouteInfo] [源代码]¶
漫游……的实例
CompiledRouter
返回已定义路由的列表。CompiledRouter的默认路由检查器。
- 参数:
router (CompiledRouter) -- 要检查的路由器。
- 返回:
一份名单
RouteInfo
。- 返回类型:
List[RouteInfo]
信息类¶
inspect函数返回的信息由这些类表示。
- class falcon.inspect.AppInfo(routes: List[RouteInfo], middleware: MiddlewareInfo, static_routes: List[StaticRouteInfo], sinks: List[SinkInfo], error_handlers: List[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: str, class_name: str, source_info: str, methods: List[RouteMethodInfo])[源代码]¶
描述了一条路由。
- 参数:
path (str) -- 此路由的路径。
class_name (str) -- 此路由的响应方的类名。
source_info (str) -- 定义此响应器的源路径。
methods (List[RouteMethodInfo]) -- 路由中定义的方法列表。
- class falcon.inspect.RouteMethodInfo(method: str, source_info: str, function_name: str, internal: bool)[源代码]¶
描述一种响应器方法。
- 参数:
- suffix¶
此路由函数的后缀。当函数没有后缀时,它被设置为空字符串。
- 类型:
STR
- class falcon.inspect.MiddlewareInfo(middleware_tree: MiddlewareTreeInfo, middleware_classes: List[MiddlewareClassInfo], independent: bool)[源代码]¶
描述应用程序的中间件。
- 参数:
middlewareTree (MiddlewareTreeInfo) -- 应用程序的中间件树。
middlewareClasses (List[MiddlewareClassInfo]) -- 应用程序的中间件类。
independent (bool) -- 中间件组件是否独立执行。
- independent_text¶
从 independent Arg.
- 类型:
STR
- class falcon.inspect.MiddlewareTreeInfo(request: List[MiddlewareTreeItemInfo], resource: List[MiddlewareTreeItemInfo], response: List[MiddlewareTreeItemInfo])[源代码]¶
描述应用程序使用的中间件方法。
- 参数:
request (List[MiddlewareTreeItemInfo]) -- 这个 process_request 方法。
resource (List[MiddlewareTreeItemInfo]) -- 这个 process_resource 方法。
response (List[MiddlewareTreeItemInfo]) -- 这个 process_response 方法。
- class falcon.inspect.MiddlewareClassInfo(name: str, source_info: str, methods: List[MiddlewareMethodInfo])[源代码]¶
描述中间件类。
- 参数:
name (str) -- 中间件类的名称。
source_info (str) -- 定义中间件的源路径。
methods (List[MiddlewareMethodInfo]) -- 中间件类定义的方法列表。
- class falcon.inspect.StaticRouteInfo(prefix: str, directory: str, fallback_filename: Optional[str])[源代码]¶
描述了一条静电路由。
访客课程¶
下面的访问者用于遍历信息类。
- class falcon.inspect.InspectVisitor[源代码]¶
类的基本访问器类,该基访问器类实现 process 方法。
子类必须实现
visit_<name>
每个支持的类的方法。