我最近接了一个客户的旧项目。它最初是使用 Zend 框架开发的,这对我来说是一个新框架。我正在尝试修改正确的文件,但他们有三个版本的 API。
在 module.config 他们的路线为:
'api.rest.social-credential' => array(
'type' => 'Segment',
'options' => array(
'route' => '/social-credential[/:social_credential_id]',
'scheme' => 'http',
'defaults' => array(
'controller' => 'Api\\V1\\Rest\\SocialCredential\\Controller',
),
),
),
对我来说,这意味着我应该查看的控制器是 v1 或者Api\\V1\\Rest\\SocialCredential\\Controller
但是,当查看代码并查看服务器如何响应时,它显然正在运行 v3。
两个Controller定义如下:v1
'Api\\V1\\Rest\\SocialCredential\\Controller' => array(
'listener' => 'Api\\V1\\Rest\\SocialCredential\\SocialCredentialResource',
'route_name' => 'api.rest.social-credential',
'route_identifier_name' => 'social_credential_id',
'collection_name' => 'social_credential',
'entity_http_methods' => array(
0 => 'PATCH',
),
'collection_http_methods' => array(),
'collection_query_whitelist' => array(),
'page_size' => '25',
'page_size_param' => '',
'entity_class' => 'Api\\V1\\Rest\\SocialCredential\\SocialCredentialEntity',
'collection_class' => 'Api\\V1\\Rest\\SocialCredential\\SocialCredentialCollection',
'service_name' => 'SocialCredential',
),
v3
'Api\\V3\\Rest\\SocialCredential\\Controller' => array(
'listener' => 'Api\\V3\\Rest\\SocialCredential\\SocialCredentialResource',
'route_name' => 'api.rest.social-credential',
'route_identifier_name' => 'social_credential_id',
'collection_name' => 'social_credential',
'entity_http_methods' => array(
0 => 'PATCH',
1 => 'DELETE',
),
'collection_http_methods' => array(),
'collection_query_whitelist' => array(),
'page_size' => '25',
'page_size_param' => '',
'entity_class' => 'Api\\V3\\Rest\\SocialCredential\\SocialCredentialEntity',
'collection_class' => 'Api\\V3\\Rest\\SocialCredential\\SocialCredentialCollection',
'service_name' => 'SocialCredential',
),
我在 module.config 中找不到任何东西让我相信 v3 应该是除此定义存在之外的目标。要么我遗漏了一些东西,要么我不明白 Zend 路由是如何工作的。有人可以对此有所了解吗?