Php 带版本的Yi2 API路由

Php 带版本的Yi2 API路由,php,api,yii2,Php,Api,Yii2,我在获取Yii2应用程序API设置时遇到问题。我们已经建立了一个网站并在运行,我的任务是为第三方设置一个API来连接到我们以执行某些函数调用。我一直在阅读文档,在谷歌上搜索,发现它有一个网站和api的基本设置。我安装它是为了看看它是如何安装的,所以我可以尝试将它应用到我的网站上 我对目录结构的API部分做得很好,但我一辈子都搞不清楚路由应该如何工作 我的目录结构如下: root --api ----config ------main.php ----modules ------v1 ------

我在获取Yii2应用程序API设置时遇到问题。我们已经建立了一个网站并在运行,我的任务是为第三方设置一个API来连接到我们以执行某些函数调用。我一直在阅读文档,在谷歌上搜索,发现它有一个网站和api的基本设置。我安装它是为了看看它是如何安装的,所以我可以尝试将它应用到我的网站上

我对目录结构的API部分做得很好,但我一辈子都搞不清楚路由应该如何工作

我的目录结构如下:

root
--api
----config
------main.php
----modules
------v1
--------controllers
----------SearchController.php
--------models
----------Search.php
----------ApiUser.php
--------Module.php
----runtime
----web
------assets
--assets
--commands
--config
---common
---site1
--controllers
----base
----common
----site1
--mail
--migrations
--models
--modules
--runtime
--vendor
----vendor_dirs
--views
--web
namespace api\modules\v1;

class ApiModule extends \yii\base\Module
{
api别名的apache配置如下所示:

Alias /api /var/www/website.com/api/web
<Directory "/var/www/webiste.com/api/web">
    AllowOverride All
</Directory>
我已经阅读了Yii2网站上的文章,但它并没有真正阐明这个问题

更新

所以在调整了我的配置之后,我想我已经取得了一些进展,但我还没有达到这一点

我现在得到以下错误:

ReflectionException

Class api\modules\v1\Module does not exist
我在模块中的命名空间如下所示:

root
--api
----config
------main.php
----modules
------v1
--------controllers
----------SearchController.php
--------models
----------Search.php
----------ApiUser.php
--------Module.php
----runtime
----web
------assets
--assets
--commands
--config
---common
---site1
--controllers
----base
----common
----site1
--mail
--migrations
--models
--modules
--runtime
--vendor
----vendor_dirs
--views
--web
namespace api\modules\v1;

class ApiModule extends \yii\base\Module
{
因此,名称空间似乎没有注册属性,或者模块的基本路径不正确

如果您能帮我解释一下,以便我能更好地理解,我将不胜感激

谢谢

成功

我是个白痴。Module.php文件不在
v1
目录中,而是在下面的一个目录中

  • 将您的模块添加到模块部分:

    'modules' => [
            'v1' => [
                'class' => 'app\modules\v1\Module',
                'basePath' => '@app/modules/v1',
                'controllerNamespace' => 'app\modules\v1\controllers'
            ]
    
  • 为REST控制器添加url规则:

     'urlManager' => [
                    'enablePrettyUrl' => true,
                    'enableStrictParsing' => false,
                    'showScriptName' => false,
                    'rules' => [
                        [
                            'class' => 'yii\rest\UrlRule',
                               'controller' => [ 'v1/search']
                        ],
                        'GET v1/search/do-search' => 'v1/search/do-search',//actually should work without this line
    

  • 创建新控制器时,将其添加到url规则中的控制器部分。

    我已经调整了配置,但仍然存在问题。请查看。它可能对你有用,就像它对我一样(当我这么做时)。@Salemourdani-URL正在生成错误。