Les Routes (Routing)

Dans le contexte du développement web, une route est une correspondance entre une URL et une action. Elle définit la correspondance entre une URL demandée par le client et le code qui sera exécuté pour répondre à cette demande.

Une route se compose généralement de deux éléments principaux :

  1. Le chemin de l'URL : C'est la partie de l'URL qui suit le nom de domaine de l'application. Par exemple, dans l'URL https://monsite.com/articles, le chemin de l'URL est /articles.

  2. La méthode HTTP : C'est la méthode utilisée par le client pour envoyer la requête au serveur. Les méthodes HTTP couramment utilisées sont GET, POST, PUT, DELETE, etc. Chaque méthode représente une action spécifique à effectuer sur la ressource associée à la route.

Pour définir une route, vous devez spécifier le chemin de l'URL, la méthode HTTP et l'action associée. Cela se fait directement dans les classes des contrôleurs à l'aide d'attributs.

Voici un exemple de route avec des attributs PHP dans un contrôleur :

   <?php

   namespace App\Controller;

   use Qwwwest\Namaskar\Route;
   use Qwwwest\Namaskar\Response;

   class HomeController
   {
       #[Route('/', name: 'home', method:['GET'])]
       public function index()
       {
           // Code for the index action
       }
   }

Dans cet exemple, l'attribut #[Route(...)]est utilisé pour définir la route. Le chemin de l'URL est /, le nom de la route est "home", et la méthode HTTP est GET.

Paramètres des routes

Dans le framework "Namaskar", il est possible de définir les paramètres des routes en tant qu'attribut PHP dans les contrôleurs.

   <?php

   namespace App\Controller;

   use Qwwwest\Namaskar\Route;
   use Qwwwest\Namaskar\Response;
   use Qwwwest\Namaskar\AbstractController;

   class MyController extends AbstractController
   {

       #[Route('/my-route/{id}', method:['GET'])]
       public function myRoute(int $id): Response
       {
           // Use the value of the $id parameter in your processing logic
       }
   }

Dans cet exemple, nous avons défini une méthode myRoute(int $id) dans le contrôleur MyController qui sera appelé si une url demandée matche la route /my-route/[id] par exemple http://localhost/my-route/123, où 123 est l'ID que vous souhaitez utiliser. L'attribut #[Route('/my-route/[id]', method:['GET'])] spécifie que cette méthode correspond à la route racine de l'application. L'attribut method:['GET'] indique que cette méthode répond uniquement aux requêtes GET.