如何区分API版本和Zend路由


How to tell API version from Zend routing

我最近接手了一个客户的旧项目。它最初是使用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