次のように、API から複数のバージョン管理されたエンドポイントを同時にサポートできるようにしたいと考えています。
/api/v1.1/counties/get
/api/v1.2/counties/get
しかし、このためのルーティングを実装しようとして、Cake がこれをどのように望んでいるかについて少し当惑しました。
エラー: コントローラ クラス郡が見つかりませんでした。
試行 1:
Router::scope('/api', function ($routes) {
$routes->setExtensions(['json']);
$routes->fallbacks('DashedRoute');
$versions = [
1.1
];
foreach ($versions as $version) {
$routes->scope('/' . $version, function($routes) {
$routes->resources('Counties', [
'controller' => 'Counties',
'prefix' => 'api',
'map' => [
'get' => [
'action' => 'get',
]
]
]);
}
}
});
試行 2:
Router::scope('/api', function($routes) {
$routes->scope('/v1.1', function($routes) {
$routes->resources('Counties', [
'controller' => 'Counties',
'map' => [
'get' => [
'action' => 'get'
]
]
]);
});
$routes->connect(
'/v1.1/counties/get',
[
'controller' => 'Counties',
'action' => 'get',
]
);
});
私が現在使用しているディレクトリ構造 (まだ議論の余地があります):
src/Controller/Api/V1.1。src/Controller/Api のベース コントローラーを使用し、必要に応じてオーバーライドするスタブ メソッドでそれらを拡張します。私の「脂肪」のほとんどはモデルにあります。
および src/Controller/Api/V1.1/CountiesController.php には次のものがあります。
namespace App\Controller\Api\V1.1;
class CountiesController extends AppController
{
}
洞察をいただければ幸いです