API Platform配置Server后路由404异常求助
问题原因及解决方案
问题出在你配置的OpenAPI Server URL包含了额外的路径前缀(比如/php-api),但Symfony应用本身没有配置对应的路由基础路径,导致请求的实际路径和Symfony注册的路由不匹配。
从错误信息能看到,请求的URL是http://localhost/php-api/v1/examples/public,但你的路由是/v1/examples/public——Symfony会用请求的**路径部分(去掉域名后的完整路径)**去匹配路由,也就是/php-api/v1/examples/public,而你注册的路由是/v1/examples/public,自然匹配不上,返回404。
解决办法
方法1:给Symfony配置路由基础路径
如果你的API确实需要/php-api作为前缀,在config/packages/routing.yaml里添加基础路径配置:
framework: router: base_path: '/php-api'
这样Symfony会自动去掉请求路径里的/php-api前缀,再去匹配你注册的/v1/examples/public路由,就能正常命中。
方法2:调整OpenAPI Server的URL配置
如果不需要/php-api这个前缀,检查你的环境变量值:
- 确保
API_ROUTE是空字符串,或者$envServerPath . $envValue组合后是你的应用根地址(比如http://localhost),这样OpenAPI文档里的请求会直接用http://localhost/v1/examples/public,和Symfony的路由匹配。
也可以优化代码里的路径拼接逻辑,避免出现多余的斜杠:
$servers = [ new Server(rtrim($envServerPath, '/') . '/' . ltrim($envValue, '/')) ];
验证
修改后执行php bin/console debug:router确认路由依然存在,然后重新访问API文档发起请求,应该能正常命中路由。
内容的提问来源于stack exchange,提问作者monaxi
相关产品推荐
相关产品推荐

