Zend выразительное исключение бросания hal при использовании от нескольких маршрутов - PullRequest
0 голосов
/ 09 мая 2019

У меня есть класс модели user, и у меня есть три конечные точки API, связанные с этим пользовательским объектом

  1. POST /api/user
  2. GET /api/user/:id_user
  3. 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, это работает без каких-либо проблем.но это кажется излишним.И сценарий, который я описываю, не так уж редок.Следовательно, какова наилучшая практика для достижения этого результата?

...