我正在通过向它发送一个OPTIONS命令来测试我的zf2 restful api,但它直接进入在路由器中定义的动作而不是options()方法。ZF2 Restful API非路由选项方法
路由器:
'router' => array(
'routes' => array(
'edatafeed' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/api',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Segment',
'options' => array(
'route' => '/:controller[/:action][/]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
),
),
),
),
),
),
),
控制器:
class SomeController extends ApiController
{
protected $dm;
private function getDm()
{
$this->dm = $this->getServiceLocator()->get('doctrine.documentmanager.odm_default');
}
public function executeAction()
{
return new JsonModel(array(
'ok' => false,
'data' => null,
));
}
}
ApiController:
class ApiController extends AbstractRestfulController
{
protected function methodNotAllowed()
{
$this->response->setStatusCode(405);
throw new \Exception('Method Not Allowed');
}
public function options()
{
$response = $this->getResponse();
$headers = $response->getHeaders();
$headers->addHeaderLine('Allow', implode(',', array(
'GET',
'POST',
)))
->addHeaderLine('Content-Type','application/json; charset=utf-8');
return $response;
}
}
当我发送的OPTIONS命令/ API /一些/执行它进入右入执行行动,而不是进入期权方法。在路由中是否有我缺少的东西?我认为发送任何OPTIONS命令会将它路由到options()。
感谢