有人可以提供有关 API 平台 UI 的帮助吗?在文档中,我无法找到定义服务器的方法:
我希望服务器端点输出显示是在localhost、dev还是prod上。
有人可以帮忙解决这个问题吗:
我在 Symfony 中使用它。
我不确定这是否与路由文件夹中的 api_platform.yaml 文件中的配置有关:
api_platform:
resource: .
type: api_platform
prefix: /
我想配置服务器路径,例如:{domain/API_ROUTE}
,其中API_ROUTE
被定义为.env
变量。
最佳答案
您需要装饰OpenApiFactory
。对于如何以及为什么,在SymfonyCast中有详细解释。 .
作为一个工作示例:在项目 /src/ApiPlatform/OpenApiFactoryDecorator.php
中创建一个包含以下内容的文件:
<?php
namespace App\ApiPlatform;
use ApiPlatform\OpenApi\Factory\OpenApiFactoryInterface;
use ApiPlatform\OpenApi\Model\Server;
use ApiPlatform\OpenApi\OpenApi;
use Symfony\Component\DependencyInjection\Attribute\AsDecorator;
#[AsDecorator('api_platform.openapi.factory')]
class OpenApiFactoryDecorator implements OpenApiFactoryInterface
{
public function __construct(private OpenApiFactoryInterface $decorated) {}
public function __invoke(array $context = []): OpenApi
{
$openApi = $this->decorated->__invoke($context);
// Create an array with your servers.
$servers = [
new Server("https://dev.example.com/", "Development"),
new Server("https://prod.example.com/", "Production")
];
return $openApi->withServers($servers);
}
}
上面的示例代码应该可以在具有 API Platform v3.1.* 的 Symfony v6.3.* 中运行,并在文档中提供配置服务器所需的内容。
注意:
每当您在 prod
环境中禁用文档(作为示例)时,您很可能会遇到上述代码的问题。每当禁用文档时都可能出现错误:服务“App\ApiPlatform\OpenApiFactoryDecorator”依赖于不存在的服务“api_platform.openapi.factory”。
。为了解决这个问题,您应该使用 $onInvalid
参数来忽略无效引用,如下所示:
#[AsDecorator(
decorates: 'api_platform.openapi.factory',
onInvalid: ContainerInterface::IGNORE_ON_INVALID_REFERENCE, // This line is important to ignore errors whenever you disable the documentation in a specific environment.
)]
关于php - API 平台 - UI 服务器端点定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76990663/