我使用以下module.config.php配置了Resftul模块(https://github.com/scaraveos/ZF2-Restful-Module-Skeleton)。但是当我想访问“public / rest / article.json”时,路由失败。
有人对我有线索吗? 给出了控制器。
return array(
'errors' => array(
'post_processor' => 'json-pp',
'show_exceptions' => array(
'message' => true,
'trace' => true
)
),
'di' => array(
'instance' => array(
'alias' => array(
'json-pp' => 'Rest\PostProcessor\Json',
'image-pp' => 'Rest\PostProcessor\Image',
)
)
),
'controllers' => array(
'invokables' => array(
'article' => 'Rest\Controller\ArticleController',
)
),
'router' => array(
'routes' => array(
'restful' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/[:controller][.:formatter][/:id]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'formatter' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[a-zA-Z0-9_-]*'
),
),
),
),
),
);
autoload_classmap是
'Rest\Controller\ArticleController' => __DIR__ . '/src/Rest/Controller/ArticleController.php',
答案 0 :(得分:0)
您可以执行您想要的操作,但有一种更好的方法来处理REST请求,使用“内容类型”标头来决定要显示的格式。 ZF2擅长使用View Strategies:
您可以根据请求的内容类型使用不同的策略,这是您应该使用REST API执行的操作。
您可以重写路线以使用以下内容:
'route' => '/[:controller[.:format][/:id]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'format' => '(xml|json|sphp)',
'id' => '[1-9][0-9]*',
),
'defaults' => array(
'controller' => 'Rest\Controller\ArticleController',
'format' => 'xml',
),
然后你可以使用'/articles.json/9'或/ articles / xml等路线
答案 1 :(得分:0)
我不确定您的vhost配置是什么,但如果您尝试访问此网址:
http://somehost/public/rest/article.json
然后你需要改变这个:
'route' => '/[:controller][.:formatter][/:id]',
到此:
'route' => '/public/rest/[:controller][.:formatter][/:id]',
请告诉我这是否适合您。