HEAD
在 apigility 中实现请求时,我无法以未找到的 404 响应。默认情况下, ApigilityHEAD
使用与请求相同的资源方法处理请求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 OK。我可以确认ApiProblemResponse
是从方法返回的。使用GET
I 请求资源,我得到了预期的 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 方法的结果作为应用程序响应返回。这对我来说似乎是正确的。在头部实现中使用了 MvcEvent 响应,因此忽略了ApiProblemResponse
从 resourceListener 返回的 I。我无法MvcEvent
从我的ResourceListener
.
有没有人能够为HEAD
请求返回 404 的解决方案?