将 api 个版本添加到 Cakephp 模态视图控制器系统
Adding api versions to Cakephp modal view controller system
我正在使用 CAKEPHP 创建我的应用程序 api,
目前我在`
中的控制器很少
app/controllers/{UsersController, AdminController, StoresController}
` 等等
我正在以 //users/
访问我的控制器
但是我想在 cakephp 中添加版本控制系统
类似于
<ip>/<foldername>/v1/users/<action>
<ip>/<foldername>/v2/users/<action>
我尝试在 Controllers/
中创建一个文件夹作为 Controllers/v1/UsersController.php
但是我无法访问它。
我如何配置我的路线
我对您使用的 CakePHP 版本感到很困惑(您标记了 cakephp-3.0,并且您使用的文件夹结构类似于 2.x),但是两者 2.x 和 3.x 版本有一个共同的概念叫做 Prefix Routing,这是你应该在这里使用的。下面的例子假设 CakePHP 3.x:
您需要在控制器目录中创建目录(v1、v2)。接下来,在那个文件夹中创建单独的控制器,记住命名空间也应该反映这个结构:
<?php
namespace App\Controller\v1;
use App\Controller\AppController;
class UsersController extends AppController {
//...
}
最后一步是在 routes.php 中配置路由。示例如下:
Router::prefix("v1", function (RouteBuilder $routes){
$routes->fallbacks(DashedRoute::class);
});
可在此处找到更多信息:
Prefix Routing
对于 CakePHP 2.x 情况略有不同:
在 v2.x 中,您不应在 Controller 目录中创建文件夹。所有有前缀和无前缀的函数都将驻留在单个控制器中,例如
class UsersController extends AppController {
/**
* Unprefixed function
*/
public function login(){
}
/**
* Prefix v1
*/
public function v1_login(){
}
/**
* Prefix v2
*/
public function v2_login(){
}
}
接下来,您需要在 app/Config/core.php 文件中配置这些前缀,如下所示:
Configure::write('Routing.prefixes', array('v1', 'v2'));
在此之后,您应该能够使用 v1 和 v2 前缀访问您的操作,例如 yourapp/v1/users/login
将映射到 UsersController::v1_login()
,yourapp/v2/users/login
将映射到 UsersController::v2_login()
。
2.x 文档中的更多信息:Prefix Routing v2.x
我正在使用 CAKEPHP 创建我的应用程序 api,
目前我在`
中的控制器很少app/controllers/{UsersController, AdminController, StoresController}
` 等等
我正在以 //users/
访问我的控制器但是我想在 cakephp 中添加版本控制系统
类似于
<ip>/<foldername>/v1/users/<action>
<ip>/<foldername>/v2/users/<action>
我尝试在 Controllers/
中创建一个文件夹作为 Controllers/v1/UsersController.php
但是我无法访问它。 我如何配置我的路线
我对您使用的 CakePHP 版本感到很困惑(您标记了 cakephp-3.0,并且您使用的文件夹结构类似于 2.x),但是两者 2.x 和 3.x 版本有一个共同的概念叫做 Prefix Routing,这是你应该在这里使用的。下面的例子假设 CakePHP 3.x:
您需要在控制器目录中创建目录(v1、v2)。接下来,在那个文件夹中创建单独的控制器,记住命名空间也应该反映这个结构:
<?php
namespace App\Controller\v1;
use App\Controller\AppController;
class UsersController extends AppController {
//...
}
最后一步是在 routes.php 中配置路由。示例如下:
Router::prefix("v1", function (RouteBuilder $routes){
$routes->fallbacks(DashedRoute::class);
});
可在此处找到更多信息: Prefix Routing
对于 CakePHP 2.x 情况略有不同:
在 v2.x 中,您不应在 Controller 目录中创建文件夹。所有有前缀和无前缀的函数都将驻留在单个控制器中,例如
class UsersController extends AppController {
/**
* Unprefixed function
*/
public function login(){
}
/**
* Prefix v1
*/
public function v1_login(){
}
/**
* Prefix v2
*/
public function v2_login(){
}
}
接下来,您需要在 app/Config/core.php 文件中配置这些前缀,如下所示:
Configure::write('Routing.prefixes', array('v1', 'v2'));
在此之后,您应该能够使用 v1 和 v2 前缀访问您的操作,例如 yourapp/v1/users/login
将映射到 UsersController::v1_login()
,yourapp/v2/users/login
将映射到 UsersController::v2_login()
。
2.x 文档中的更多信息:Prefix Routing v2.x