API 平台 - 在本地主机服务器配置路由后 404 Not Found

问题描述 投票:0回答:1

我在 API 平台中注册服务器,例如:

readonly class OpenApiFactoryDecorator implements OpenApiFactoryInterface
{
    public function __construct(private OpenApiFactoryInterface $decorated) {}

    public function __invoke(array $context = []): OpenApi
    {
        $envServerPath = $_ENV['API_SERVER_URL'];
        $envValue = $_ENV['API_ROUTE'];

        $openApi = $this->decorated->__invoke($context);

        $servers = [
            new Server($envServerPath . $envValue,)
        ];

        return $openApi->withServers($servers);
    }

并得到:

执行此操作后,我的路线抛出

404 Not Found
异常..

例如:

new Get(
        uriTemplate: '/v1/examples/public',
        status: Response::HTTP_OK,
        controller: PublicExampleController::class,
        paginationEnabled: false,
        read: false,
        name: 'public_endpoint'
    )

尝试使用命令:

 php bin/console debug:router

给我路线的输出:

  public_endpoint                          GET      ANY      ANY    /v1/examples/public                

完整错误消息:

找不到“GET http://localhost/php-api/v1/examples/public”(来自“http://localhost/docs”)的路由, “类”:“Symfony\Component\HttpKernel\Exception\NotFoundHttpException

在配置文档中的服务器之前,路由已按预期工作。可能出什么问题了?

php symfony api-platform.com
1个回答
0
投票

首先,此信息可以添加到您的第一个线程

这个问题,说实话,错误信息已经很清楚了。未找到您的路线(例如生成的 URL 错误)。根据您的第一个线程并结合此信息,您的路线应该是:

http://localhost/v1/examples/public

而不是

http://localhost/php-api/v1/examples/public

就像我在您的第一个线程中的回答中所介绍的那样,服务器应该仅包含主机名(例如

http://localhost
)。通过查看您的代码,
$_ENV['API_ROUTE']
添加了
/php-api/
部分。除了主机名之外,您不应添加任何其他内容。 API 平台中配置的任何前缀(检查您的第一个线程,以及提供的
.yaml
配置)都会自动添加。

根据信息,要解决此问题,请从

$_ENV['API_ROUTE']
中删除
$envValue
new Server($envServerPath . $envValue,)
。或者至少确保仅添加主机名的服务器(例如。
new Server('http://localhost/')
)。

© www.soinside.com 2019 - 2024. All rights reserved.