【发布时间】:2014-11-05 01:18:35
【问题描述】:
我正在通过向它发送一个 OPTIONS 命令来测试我的 zf2 restful api,但它会直接进入路由器中定义的操作,而不是 options() 方法。
路由器:
'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;
}
}
当我向 /api/some/execute 发送一个 OPTIONS 命令时,它会直接进入执行操作而不是选项方法。路由中是否缺少我的东西?我认为发送任何 OPTIONS 命令都会将其路由到 options()。
谢谢
【问题讨论】:
标签: php rest zend-framework2