我在 Symfony 4.3 项目上使用 API 平台,我只想拥有一个不可变的属性(userId在这种情况下),它可以在 POST 上设置但不能用 PUT 更改。到目前为止,完成此操作的唯一方法是删除userIdsetter 并使用构造函数来初始设置值。这个设置仍然在Swagger for PUT 中显示属性(下图),但更麻烦的是它接受该属性而不修改记录。这是一个无声的忽略,我更喜欢 400 Bad Request 返回代码,让客户知道他的请求没有按预期处理。有没有其他方法可以用 API 平台完成类似的行为?已经尝试过序列化组,但可能设置错误。<?phpdeclare(strict_types = 1);namespace App\Entity;use ApiPlatform\Core\Annotation\ApiFilter;use ApiPlatform\Core\Annotation\ApiResource;use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\NumericFilter;use Doctrine\ORM\Mapping as ORM;/** * @ORM\Entity(repositoryClass="App\Repository\SubscriptionRepository") * * @UniqueEntity("userId") * * @ApiResource() */class Subscription{ /** * @var int * * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; /** * @var int * * @ORM\Column(type="integer") * * @ApiFilter(NumericFilter::class) */ private $userId; /** * Subscription constructor. * * @param int $userId */ public function __construct(int $userId) { $this->userId = $userId; } ...?>
1 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
我认为您需要将normalization_context.groups
PUT 请求显式设置为{"read"}
(或其他内容,具体取决于您的配置)。请参阅操作文档
- 1 回答
- 0 关注
- 175 浏览
添加回答
举报
0/150
提交
取消