跳到主要内容

禁用输出验证

在某些情况下,可能需要为自定义路由器端点禁用输出验证。 下面的示例演示了如何在您自己的自定义路由器路径中执行此操作。

important

本节涉及从OpenBB v4.4.0开始可用的设置

在这两个函数中,无论return定义声明什么,输出都将被类型化为"Any"。

@router.command装饰器中,添加关键字参数:

no_validate = True

示例

此示例假设已定义并安装了虚构的扩展。

from datetime import datetime

from openbb_core.app.model.command_context import CommandContext
from openbb_core.app.model.example import APIEx, PythonEx
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.provider_interface import (
ExtraParams,
ProviderChoices,
StandardParams,
)
from openbb_core.app.query import Query
from openbb_core.app.router import Router
from openbb_core.provider.abstract.data import Data

router = Router(prefix="", description="Some OpenBB Router Extension.")

# 这使用提供商接口。
@router.command(
model="SomeModel",
no_validate=True,
examples=[
APIEx(parameters={"provider": "some_provider"}),
PythonEx(
description="Say Hello.",
code=[
"result = obb.some_extension.some_provider_function()",
],
),
],
)
async def some_provider_function(
cc: CommandContext,
provider_choices: ProviderChoices,
standard_params: StandardParams,
extra_params: ExtraParams,
) -> OBBject[Data]:
"""使用提供商接口的某个函数。"""
obbject = await OBBject.from_query(Query(**locals()))

new_output = []
results = obbject.results

# 对结果做一些处理并追加到`new_output`列表。

return new_output


# 这是一个标准的路由器"get"命令。
@router.command(
methods=["GET"],
no_validate=True
examples=[
PythonEx(
description="Say Hello.",
code=[
"result = obb.some_extension.hello()",
],
),
],
)
async def hello() -> (
Any
):
"""Hello World."""
return {
datetime.now().strftime(
"%Y-%m-%d"
): "Hello from the Empty Router extension!"
}