Zend framework2 404未使用Zend framework 2在JSON中呈现HTTP错误
我正在使用zend framework2创建一个简单的restful api,我已经参考了Rob Allen关于这个主题的注释以及作者的这篇优秀教程http://hounddog.github.com/blog/getting-started-with-rest-and-zend-framework-2/ 下面是我的模块_config.php。您将看到我配置了路由和JSON视图策略。我的理解是,当您以这种方式设置JSON策略时,它可以容纳所有模块。问题是,当输入无效路由时,404响应将以html格式发送回,即使Accept标头正在请求Application/json 我已经为此挣扎了两天了,如果有任何建议或帮助,我将不胜感激 此对api的curl调用生成预期的404错误Zend framework2 404未使用Zend framework 2在JSON中呈现HTTP错误,zend-framework2,Zend Framework2,我正在使用zend framework2创建一个简单的restful api,我已经参考了Rob Allen关于这个主题的注释以及作者的这篇优秀教程http://hounddog.github.com/blog/getting-started-with-rest-and-zend-framework-2/ 下面是我的模块_config.php。您将看到我配置了路由和JSON视图策略。我的理解是,当您以这种方式设置JSON策略时,它可以容纳所有模块。问题是,当输入无效路由时,404响应将以html
curl -i -H "Accept: application/json" http://myapi-dev.local/xxx/1
Module_config.php
return array(
'controllers' => array(
'invokables' => array(
'Dips\Controller\Roles' => 'Dips\Controller\RolesController', //maps controller alias to a physical controller
),
),
'router' => array(
'routes' => array(
'dips' => array(
'type' => 'segment',
'options' => array(
'route' => '/dips/roles/:apikey/:uname/:appname',
'constraints' => array(
'apikey' => '[a-zA-Z0-9]+',
'uname' => '[a-zA-Z]+',
'appname' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => 'Dips/Controller/Roles',
),
),
),
),
),
'view_manager' => array(
'strategies' => array(
'ViewJsonStrategy',
),
),
);
您需要实现一个额外的渲染策略,并将其放在默认404渲染策略之上的堆栈中。或者,您可以扩展现有的ViewJsonStrategy以包括错误处理
默认的404策略是Zend/Mvc/View/Http/RouteNotFoundStrategy。如果您查看它的detectNotFoundError方法,您可以看到它何时被触发。您可能需要编写自己的JsonNotFoundStrategy来侦听
MvcEvent::EVENT\u DISPATCH\u ERROR
事件,让它检查它是否是404,然后检查accept头并最终设置一个JsonModel作为对handleThanks的实际JsonStrategy的响应,您能提供或碰巧知道一个示例来说明这一点吗?