如何讓一個(gè)簡(jiǎn)單的proof-of-conceptREST API在CakePHP4中工作?
我在這里和這里遵循了CakePHP烹飪手冊(cè)中的指南
目前,我的routes.php文件包含以下內(nèi)容(刪除注釋):
<?php
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
return static function (RouteBuilder $routes) {
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
$builder->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
$builder->connect('/pages/*', 'Pages::display');
$builder->fallbacks();
});
$routes->scope('/', function (RouteBuilder $builder) {
$builder->setExtensions(['json']);
$builder->resources('LocateITAPI');
});
};
我的控制器包含以下代碼:
<?php
// src/Controller/LocateITAPIController.php
namespace App\Controller;
use App\Controller\AppController;
class LocateITAPIController extends AppController
{
public function initialize(): void
{
parent::initialize();
$this->loadComponent('RequestHandler');
}
public function index()
{
echo json_encode(utf8_encode("LocateITAPIController::index()"));
}
public function view($id)
{
echo json_encode(utf8_encode("LocateITAPIController::view()"));
}
public function add()
{
echo json_encode(utf8_encode("LocateITAPIController::add()"));
}
public function edit($id)
{
echo json_encode(utf8_encode("LocateITAPIController::edit()"));
}
public function delete($id)
{
echo json_encode(utf8_encode("LocateITAPIController::delete()"));
}
}
我正在嘗試使用以下瀏覽器訪問(wèn)它:
http://localhost/app/locateitapi.json
我希望看到一個(gè)JSON響應(yīng),但我看到的是以下錯(cuò)誤:
由于cakephp命名約定,您會(huì)收到該錯(cuò)誤消息。
Solution I:
使用類似以下url:
http://localhost/app/locate-i-t-a-p-i.json
解決方案二:外接路由器:
Solution III:
重命名控制器類,如下所示: