Tworzenie Rest Api w CakePHP 3

Pokażę jak w prosty sposób stworzyć restowe api w CakePHP 3. Wykorzystamy do tego plugin cakephp-rest. Aby go zainstalować wydaj polecenie w composerze.

composer require sprintcube/cakephp-rest
Następnie dodaj poniższą linijkę w pliku bootstrap.php.
Plugin::load('Rest', ['bootstrap' => true]);
lub wydaj polecenie za pomocą bake.
bin/cake plugin load -b Rest
Ten plugin prawie wcale nie wymaga konfiguracji. Utwórz kontroler np. ApiController dziedziczący po RestController tak jak w poniższym przykładzie.
namespace App\Controller;

use Rest\Controller\RestController;

/**
 * Api Controller
 *
 */
class ApiController extends RestController
{

    /**
     * hello method
     *
     * @return Response|void
     */
    public function hello()
    {
        $res = [
            'my_data' => [
                'item 1',
                'item 2'
            ]
        ];

        $this->set(compact('res'));
    }
}
Ponadto dodaj jeden parametr do konfiguracji trasy isRest jak poniżej.
$routes->connect('/api/hello', ['controller' => 'Api', 'action' => 'hello', 'isRest' => true]);
Powyższa funkcja będzie zwracać json:
{
    "status": "OK",
    "result": {
        "res": {
            "my_data": [
                "item 1",
                "item 2"
            ]
        }
    }
}
Klucz status może zawierać OK lub NOK w zależności od Twojego kodu odpowiedzi. Dla wszystkich pomyślnych odpowiedzi kod będzie wynosił 200, a wartością klucza będzie OK. W przypadku błędu lub wyjątku wartość statusu zmieni się na NOK.