我有一个模型类user
,并且有三个与此用户对象相关的API端点
POST /api/user
GET /api/user/:id_user
PUT /api/user/
POST和PUT具有JSON正文。我想将所有三个操作的user
对象作为HAL响应返回。我的三个处理程序如下所示:
$userObj = $this->userService->relevent_service($params); // returning an user object
$request = $request->withAttribute("id", $userObj->getId());
$resource = $this->resourceGenerator->fromObject($eventObj,$request);
return $this->responseFactory->createResponse($request, $resource);
我的halMetadataMap如下所示:
[
'__class__' => RouteBasedResourceMetadata::class,
'resource_class' => user::class,
'route' => 'api.getUserById',
'extractor' => ArraySerializableHydrator::class,
]
它使用GET路由返回正确的用户HAL对象,没有任何问题,但是当我尝试使用POST和PUT路由生成HAL对象时,ResourceGenerator
引发异常。
如果我为用户类创建了两个附加的代理类,并为POST和PUT创建了三个单独的元数据映射,则它可以正常工作。但似乎多余。我描述的情况并不少见。因此,实现此输出的最佳实践是什么?