我正在 ZF2 中创建一个 RESTful API,为每个路由返回 JSON 响应。对于其中一个路由,我需要返回 404 响应,但这return $this->notFoundAction();是不可接受的,因为它返回的是视图而不是 JSON。因此,我正在执行以下操作:
$response = $this->getResponse();
$response->setStatusCode(404);
return new JsonModel(array(
'error_message' => "Client $clientRef doesn't exist"
));
对此进行测试,我得到了 404 状态代码的良好响应,并显示了我的错误消息。但是,响应中还包含其他 Zend 生成的消息:
{
"error_message": "Client test-client doesn't exist",
"message": "Page not found.",
"reason": "error-controller-cannot-dispatch",
"display_exceptions": true,
"controller": "Timesheet\\Controller\\TimesheetRest",
"controller_class": null
}
如果我在配置中更改display_not_found_reason并且display_exceptions都更改为false,那么它将删除一些其他详细信息,但message仍然保留:
{
"error_message": "Client test-client doesn't exist",
"message": "Page not found."
}
如何从响应正文中删除所有额外的详细信息?
请注意,我只在返回 404 状态时收到这些消息。返回400、403或409时,返回的只是我的错误信息,没有任何附加信息。
不确定它是否相关,但相关模块的配置文件如下(注意我有 2 个控制器,一个用于前端,一个用于 API):
<?php
return array(
'controllers' => array(
'invokables' => array(
'Timesheet\Controller\Timesheet' => 'Timesheet\Controller\TimesheetController',
'Timesheet\Controller\TimesheetRest' => 'Timesheet\Controller\TimesheetRestController'
)
),
绝地无双