我正在使用zend framework2创建一个简单的restful api,我参考了Rob Allen关于这个主题的注释以及http://hounddog.github.com/blog/getting-started-with-这个优秀的教程。休息和 - Zend的框架-2 /
下面的是我的module_config.php。您将看到我已配置路由和JSON视图策略。我的理解是,当您以这种方式设置JSON策略时,它可以容纳所有模块。问题是当输入无效路由时,即使Accept标头请求Application / json,404响应也会以html格式发回。
我已经在这2天内苦苦挣扎,现在任何建议或帮助都会受到赞赏
这个对api的curl调用会产生预期的404错误。
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',
),
),
);
答案 0 :(得分:0)
您需要实现一个额外的渲染策略,并将其置于默认404渲染策略之上的堆栈中。或者,您可以扩展现有的ViewJsonStrategy以包含错误处理。
默认的404策略是Zend / Mvc / View / Http / RouteNotFoundStrategy。如果您查看它的detectNotFoundError方法,您可以看到它何时被触发。