У меня есть класс модели 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,
]
Возвращает нужный пользовательский объект HAL с маршрутом GET без каких-либо проблем, нокогда я пытался сгенерировать объект HAL с маршрутом POST и PUT, ResourceGenerator
выдает исключение.
Если я создаю два дополнительных прокси-класса для пользовательского класса и создаю три отдельные карты метаданных для POST и PUT, это работает без каких-либо проблем.но это кажется излишним.И сценарий, который я описываю, не так уж редок.Следовательно, какова наилучшая практика для достижения этого результата?