我最近接手了一个客户的旧项目。它最初是使用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。
两个控制器的定义如下: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路由是如何工作的。有人能解释一下吗?
最终找到了它,zf版本下的default_version
'zf-versioning' => array(
'uri' => array(
...
13 => 'api.rest.social-credential',
),
'default_version' => 3,
),
更多信息请点击此处:https://github.com/zfcampus/zf-versioning