Добавление версий API в систему контроллера модального представления Cakephp - PullRequest
0 голосов
/ 25 апреля 2018

Я использую CAKEPHP для создания приложения apis,

В настоящее время у меня мало контроллеров в `

app / controllers / {UsersController, AdminController, StoresController}

`и т.д.

Я обращаюсь к своим контроллерам как // users /

Однако я хочу добавить систему управления версиями в cakephp

Что-то вроде

<ip>/<foldername>/v1/users/<action>
<ip>/<foldername>/v2/users/<action>

Я пытался создать папку внутри Controllers/ как Controllers/v1/UsersController.php

Однако я не могу получить к нему доступ. Как я могу настроить свои маршруты

1 Ответ

0 голосов
/ 25 апреля 2018

Я довольно озадачен тем, какую версию CakePHP вы используете (вы пометили cakephp-3.0, а структура папок, о которой вы говорили, похожа на версию 2.x), но обе версии 2.x и 3.x имеют общую концепцию, называемуюПрефикс маршрутизации, который вы должны использовать здесь.В приведенном ниже примере предполагается, что CakePHP 3.x:

Вам необходимо создать каталоги (v1, v2) внутри каталога Controller.Затем создайте отдельные контроллеры в этой папке, помня, что пространство имен также должно отражать эту структуру:

<?php
namespace App\Controller\v1;
use App\Controller\AppController;

class UsersController extends AppController {
    //...
}

Последний шаг - настроить маршрутизацию в вашем rout.php.Пример ниже:

Router::prefix("v1", function (RouteBuilder $routes){
    $routes->fallbacks(DashedRoute::class);
});

Более подробную информацию можно найти здесь: Маршрутизация префикса

Для 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: Префиксная маршрутизация v2.x

...