How do I get a simple proof-of-concept REST API working in CakePHP 4?
I have followed the guides in CakePHP's cookbook here and here
Currently my routes.php file contains the following (with comments removed):
<?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');
});
};
My Controller contains the following code:
<?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()"));
}
}
I am trying to access it using the browser at:
http://localhost/app/locateitapi.json
I am expecting to see a JSON response, instead what i am seeing is this error: