Link Search Menu Expand Document

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);
}

Prova de la API amb Postman

Documentació de la API en OpenApi

Consumir la API