检查模块

此模块可用于检查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=TrueAppInfo.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() 方法访问班级。

检查功能参考

本模块定义了以下检查功能。

路由器检查

进路检查启用以下功能。

信息类

inspect函数返回的信息由这些类表示。

访客课程

下面的访问者用于遍历信息类。