Не удается ответить 404 в запросе HEAD

Я не могу ответить с 404 не найден при реализации HEAD запрос в скорости.
Ручки Apigility HEAD запрос с тем же методом ресурса, что и GET запросы по умолчанию. Это fetch($id) метод.

Мой ресурс выглядит так:

class MyResource extends AbstractResourceListener implements ResourceInterface
{
public function fetch($id)
{
$entity = $this->getEntityById($id, false);
if ($entity === null) {
return new ApiProblemResponse(new ApiProblem(404, 'Entity with ID ' . $id . ' not found'));
}

return $entity;
}
}

При доступе к ресурсу с помощью клиента REST с помощью HEAD Я получаю 200 ОК. Я могу подтвердить ApiProblemResponse возвращается из метода.
Запрос ресурса с помощью GET Я получаю ответ 404, как и ожидалось.

Похоже, это связано с обработкой HEAD а также GET в AbstractRestfulController, Вот фрагмент кода соответствующего кода:

case 'get':
$id = $this->getIdentifier($routeMatch, $request);
if ($id !== false) {
$action = 'get';
$return = $this->get($id);
break;
}
$action = 'getList';
$return = $this->getList();
break;
// HEAD
case 'head':
$id = $this->getIdentifier($routeMatch, $request);
if ($id === false) {
$id = null;
}
$action = 'head';
$this->head($id);
$response = $e->getResponse();
$response->setContent('');
$return = $response;
break;

В реализации get результат от метода resourceListener возвращается как ответ приложения. Это кажется правильным для меня.
В реализации head используется ответ MvcEvent, что игнорирует ApiProblemResponse Я возвращаюсь из resourceListener. Я не могу получить доступ к MvcEvent от моего ResourceListener,

У кого-нибудь есть решение, чтобы иметь возможность вернуть 404 за HEAD запрос?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …