API-Platform 2.6中如何将Game实体仅作为User的子资源暴露
API Platform 2.6 关闭Game实体独立端点配置方案
针对你当前PHP 8.0 + Symfony 5.3 + API Platform 2.6的技术栈,在现有子资源配置正常的前提下,可通过以下两种方案禁用Game实体的默认独立访问端点:
方案1:实体注解配置(注解声明资源场景适用)
找到App\Entity\Game实体类,修改@ApiResource注解,清空默认的单条/集合操作配置即可:
<?php namespace App\Entity; use ApiPlatform\Core\Annotation\ApiResource; use Doctrine\ORM\Mapping as ORM; /** * @ApiResource( * itemOperations={}, * collectionOperations={}, * // 原有子资源相关的注解配置保留不变 * ) * @ORM\Entity */ class Game { // 原有实体的属性、关联映射、方法逻辑全部保持不变 }
原理:API Platform会根据itemOperations和collectionOperations的配置生成对应独立端点,清空配置后就不会生成/games相关的独立路由,已经配置完成的/users/{id}/games子资源路由不受影响。
方案2:YAML资源配置(yaml声明资源场景适用)
如果你使用yaml文件管理API资源配置,修改config/packages/api_platform/resources.yaml中Game实体的配置:
App\Entity\Game: attributes: item_operations: [] collection_operations: [] # 原有子资源配置保持不变
验证配置生效
- 清除Symfony缓存:
php bin/console cache:clear - 执行路由查看命令:
php bin/console debug:route - 确认路由列表中无
/games相关路由,/users/{id}/games相关路由正常存在即可
内容的提问来源于stack exchange,提问作者Nayte
相关产品推荐
相关产品推荐

