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