使用openapi-generator生成Symfony bundle后访问路由遇404错误
OpenAPI Generator生成的Symfony Bundle路由可见但访问返回404
本人对openapi-generator和Symfony了解有限,这应该是个基础问题,但我已经花了好几个晚上尝试调试、查阅文档都没解决,特此提问。
问题概述
用openapi-generator创建了一个Symfony Bundle,严格按照生成的README步骤操作。运行./bin/console debug:router能正常看到预期的路由,但访问该路由时却返回404页面,抛出NotFoundHttpException和ResourceNotFoundException异常,不清楚哪里配置漏了。
操作细节
1. OpenAPI配置文件
使用了一个简单的openapi.yaml:
openapi: 3.0.1 info: title: test version: 0.0.1 paths: /my-route: get: summary: placeholder responses: "200": description: OK
2. 生成Symfony Bundle
执行以下命令构建Bundle:
java -jar openapi-generator-cli-6.3.0.jar generate --git-user-id my_name --git-repo-id my_project -i openapi.yaml -g php-symfony -o php-symfony
3. 创建Symfony应用
在单独目录按照官方文档创建Symfony应用:
composer create-project symfony/skeleton:"6.2.*" my_symfony_app cd my_symfony_app/ composer require webapp
4. 集成Bundle到Symfony应用
严格遵循Bundle生成的README步骤操作:
- 在
my_symfony_app/composer.json中添加本地仓库配置:"repositories": [{ "type": "path", "url": "/path/to/php-symfony" }], - 执行
composer require my_name/my_project:dev-main,询问是否执行recipe时选择y - 在
my_symfony_app/config/routes.yaml中添加路由配置:open_api_server: resource: "@OpenAPIServerBundle/Resources/config/routing.yaml" my_symfony_app/config/bundles.php已自动包含OpenAPI\Server\OpenAPIServerBundle::class => ['all' => true],,无需修改- 按照README要求创建
DefaultApiInterface实现类,并注册到my_symfony_app/config/services.yaml
当前现象
部署到PHP服务器后,访问http://localhost/my_symfony_app/public/index.php/my-route返回404,堆栈信息片段:
in vendor/symfony/http-kernel/EventListener/RouterListener.php (line 127) in vendor/symfony/event-dispatcher/Debug/WrappedListener.php -> onKernelRequest (line 115) ... 省略部分内容 ... in vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php -> handle (line 35) in vendor/autoload_runtime.php -> run (line 29)
但运行./bin/console debug:router能清晰看到路由存在:
open_api_server_default_myrouteget GET ANY ANY /my-route
内容的提问来源于stack exchange,提问作者gturri
相关产品推荐
相关产品推荐

