Implementació d’una API RESTful en PHP
Anem a implementar una API senzilla basada en el nostre framework MVC.
Tindrem els següents endpoints que caldrà definir en la taula de rutes.
- POST /api/v1/movies
- GET /api/v1/movies
- GET /api/v1/movies/:id
Tin en compte que aquesta versió és molt bàsica i té mancances quant a validació i filtratge de dades.
Com hem vist en l’apartat anterior el servidor respon a les sol·licitud HTTP amb dades en format JSON i un codi d’estat.
Per poder respondre en dades en format JSON hem implementat el mètode Response::jsonResponse
.
/**
* @param $element
* @return false|string
*/
public function jsonResponse(array $element, integer $code)
{
header('Content-Type: application/json; charset=UTF-8');
return json_encode($element);
}
Perquè un objecte puga convertir-se en un string JSON caldrà implementar en la classe l’interfície JsonSerializable
que obliga a implmentar el mètode jsonSerialize
que haurà de tornar un array que represente l’objecte.
# src/Controllers/ApiController.php
/**
* @return string
* @throws \App\Core\Exception\ModelException
*/
public function index(): string
{
$movieModel = App::getModel(MovieModel::class);
$movies = $movieModel->findAllPaginated(1, 8,
["release_date" => "DESC", "title" => "ASC"]);
return $this->response->jsonResponse($movies);
}