API Platform升级至2.7后Swagger页面出现TypeError错误
问题原因分析
这个错误的核心是LexikJWTAuthenticationBundle的OpenApi工厂类初始化时,$checkPath参数被传入了null,但该参数要求必须是字符串类型。API功能正常是因为业务接口的运行不依赖Swagger UI的OpenApi文档生成逻辑,只有访问Swagger HTML页面时才会触发OpenApi文档的构建流程,进而调用到这个有参数缺失问题的工厂类。
解决方法
- 补全LexikJWT的配置项
打开config/packages/lexik_jwt_authentication.yaml,确保存在check_path配置,填写你项目中实际的JWT校验接口路径:lexik_jwt_authentication: # 其他已有的配置... check_path: /api/login_check - 清理项目缓存
升级后缓存可能残留旧的容器配置,执行缓存清理命令:php bin/console cache:clear --env=dev php bin/console cache:clear --env=prod - 检查集成服务配置
如果项目中手动配置过OpenApi相关服务,确认没有覆盖默认的参数注入逻辑,保证checkPath参数能正确传递给Lexik的OpenApiFactory类。
补充说明
API Platform 2.7对OpenApi文档生成逻辑做了重构,和LexikJWT的集成对配置参数的要求更严格。旧版本(1.2)可能不需要显式配置check_path就能生成Swagger文档,但升级后这个参数成为OpenApiFactory初始化的必填项——它需要用这个路径来生成Swagger文档里的JWT安全认证相关定义。
内容的提问来源于stack exchange,提问作者Guillaume
相关产品推荐
相关产品推荐

