
本教程旨在解决 sylius 新安装后 api 无法正常工作,返回 404 错误的问题。核心解决方案包括在 `_sylius.yaml` 中启用 api 功能,以及通过 `lexik:jwt:generate-keypair` 命令生成 jwt 密钥对,以确保 api 路由正确响应并支持认证。
当在 Sylius 项目中尝试访问 API 路由时(例如 /api/v2/docs),如果遇到“404 Page not found”错误,即使通过 php bin/console debug:router api 命令确认 API 路由已存在,这通常表明 API 功能尚未完全激活或其认证机制未配置。
以 api_doc 路由为例,通过 debug:router 命令可以确认其路径和控制器信息:
+--------------+---------------------------------------------------------+
| Property | Value |
+--------------+---------------------------------------------------------+
| Route Name | api_doc |
| Path | /api/v2/docs.{_format} |
| Path Regex | {^/api/v2/docs(?:\.(?P<_format>[^/]++))?$}sD |
| Host | ANY |
| Host Regex | |
| Scheme | ANY |
| Method | ANY |
| Requirements | NO CUSTOM |
| Class | Symfony\Component\Routing\Route |
| Defaults | _api_respond: true |
| | _controller: api_platform.action.documentation() |
| | _format: |
| Options | compiler_class: Symfony\Component\Routing\RouteCompiler |
+--------------+---------------------------------------------------------+尽管路由信息在控制台中可见,但在浏览器或 API 客户端中访问仍旧返回 404,这提示我们需要检查 Sylius API 的核心配置。
Sylius 的统一 API 仍在积极开发中,因此在默认情况下可能未完全启用。要激活 API 功能,需要修改项目的配置文件。
定位配置文件: 打开您的 Sylius 项目中的 config/packages/_sylius.yaml 文件。
添加配置项: 在该文件中添加以下配置,将 sylius_api 的 enabled 属性设置为 true:
# config/packages/_sylius.yaml
sylius_api:
enabled: true保存文件后,API 功能即被激活。此时再次尝试访问 API 路由,您会发现 404 错误可能已经消失,但可能会遇到新的认证相关错误,这引出了下一步。
Sylius API 依赖 JSON Web Token (JWT) 进行认证。如果在未生成 JWT 密钥对的情况下尝试使用 API,可能会遇到“Unable to create signed JWT from given configuration”之类的错误。这是因为 API 无法创建或验证签名的 JWT。
要解决此问题,需要使用 LexikJWTAuthenticationBundle 提供的命令来生成 JWT 密钥对:
执行密钥生成命令: 在您的项目根目录下,运行以下控制台命令:
php bin/console lexik:jwt:generate-keypair
此命令会在您的项目配置的密钥存储位置(通常是 config/jwt 目录)生成 private.pem 和 public.pem 两个文件。这些文件用于 API 请求的签名和验证。
完成以上两个步骤后,Sylius API 应该已经完全启用并支持基于 JWT 的认证。您现在可以根据 Sylius 官方 API 文档开始使用 API 功能。
通过遵循本教程中的步骤,您将能够成功启用 Sylius API,并解决新安装后遇到的常见 404 和认证问题,从而顺利进行 API 开发。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号