Nerd Service - Web Developer

Semplice tutorial su come creare una REST API in PHP

Semplice tutorial su come creare una REST API in PHP

Prerequisiti

Prima di iniziare, sarà necessario avere configurato:

  • Un ambiente di sviluppo locale con PHP e un server web (come Apache o Nginx) installati.
  • Un editor di testo o un ambiente di sviluppo integrato (IDE) per scrivere il codice.

Passaggio 1: configura il tuo progetto

Crea una nuova directory per il tuo progetto e naviga in essa tramite il terminale. Quindi, crea un nuovo file chiamato index.php. Questo sarà il punto di ingresso per la tua API.

Passaggio 2: definisci le tue rotte

Una REST API è basata sull’idea di risorse, che sono rappresentate da un URI (Uniform Resource Identifier). Per interagire con queste risorse, è necessario definire le rotte che la nostra API supporterà.

Ad esempio, supponiamo di voler creare una semplice API per un’applicazione di liste di cose da fare. Potremmo definire le seguenti rotte:

  • GET /tasks # recupera un elenco di tutte le attività
  • POST /tasks # crea una nuova attività
  • GET /tasks/{id} # recupera un'attività specifica tramite il suo ID
  • PUT /tasks/{id} # aggiorna un'attività specifica tramite il suo ID
  • DELETE /tasks/{id} # elimina un'attività specifica tramite il suo ID

In PHP, possiamo utilizzare la variabile $_SERVER['REQUEST_METHOD'] per determinare quale metodo HTTP è stato utilizzato nella richiesta e la variabile $_SERVER['REQUEST_URI'] per determinare l’URI richiesto.

Ecco un esempio di codice che dimostra come definire queste rotte:


switch ($_SERVER['REQUEST_METHOD']) {
  case 'GET':
    if ($_SERVER['REQUEST_URI'] === '/tasks') {
      // Retrieve a list of all tasks
    } elseif (preg_match('/^\/tasks\/(\d+)$/', $_SERVER['REQUEST_URI'], $matches)) {
      // Retrieve a specific task by its ID
      $taskId = $matches[1];
    } else {
      // Invalid route
    }
    break;
  case 'POST':
    if ($_SERVER['REQUEST_URI'] === '/tasks') {
      // Create a new task
    } else {
      // Invalid route
    }
    break;
  case 'PUT':
  case 'PATCH':
    if (preg_match('/^\/tasks\/(\d+)$/', $_SERVER['REQUEST_URI'], $matches)) {
      // Update a specific task by its ID
      $taskId = $matches[1];
    } else {
      // Invalid route
    }
    break;
  case 'DELETE':
    if (preg_match('/^\/tasks\/(\d+)$/', $_SERVER['REQUEST_URI'], $matches)) {
      // Delete a specific task by its ID
      $taskId = $matches[1];
    } else {
      // Invalid route
    }
    break;
  default:
    // Invalid HTTP method
    break;
}