我使用zend framework2创建了一个简单的restful api,并且我已经引用了Rob Allen关于这个主题的笔记以及http:// hounddog的优秀教程。 github.com/blog/getting-started-with-rest-and-zend-framework-2/404使用Zend框架在JSON中不呈现HTTP错误2
下面是我的module_config.php。你会看到我拥有路由并配置了JSON视图策略。我的理解是,当您以这种方式设置JSON策略时,它可以容纳所有模块。问题是,当输入无效路由时,即使Accept头正在请求Application/json,404响应也会以html的形式返回。
我一直在为此而努力了2天了任何建议或帮助,将不胜感激
这卷曲调用API产生预期的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',
),
),
);
想想你可能需要编写自己的JsonNotFoundStrategy来监听MvcEvent :: EVENT_DISPATCH_ERROR事件,检查它是否是404,然后检查accept头并最终将JsonModel设置为实际JsonStrategy的响应以处理 – Crisp 2013-03-06 16:48:51
谢谢,你能提供或碰巧知道一个例子,说明这一点? – Rodney 2013-03-12 15:14:33