Les routes et les contrôleurs

La table de routes, les paramètres de chemin et de requête, l'ordre des routes, les réponses 404 et 405, et le travail d'un contrôleur : lire la requête, appeler le modèle, choisir la réponse.

  • 23 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Route : de quoi s'agit-il ?

    Voir la réponse

    Règle qui associe une méthode HTTP et un motif d'URL à l'action chargée de traiter la requête.

    Un même chemin peut porter plusieurs routes selon la méthode : GET /articles liste, POST /articles crée. L'ensemble des routes forme la table que l'application parcourt à chaque requête.

  • Le routeur retient la première route qui correspond. Quelle action traite GET /articles/new avec cette table ?

    ```text
    1. GET /articles index
    2. GET /articles/{id} show
    3. GET /articles/new new_form
    4. POST /articles create
    `

    • show, avec id valant new
    • new_form, car c'est la route la plus précise
    • index, car /articles est un préfixe du chemin
    • Aucune : la réponse est 404, car new n'est pas un nombre
    Voir la réponse

    show, avec id valant new

    {id} accepte n'importe quel segment, new compris, et la route 2 est lue avant la route 3. Il faut déclarer /articles/new avant /articles/{id}, ou borner id aux chiffres.

  • Dans le motif /articles/{id}, {id} est un … : l'application extrait sa valeur de l'URL et la transmet à l'action.

    Voir la réponse

    Dans le motif /articles/{id}, {id} est un paramètre de chemin : l'application extrait sa valeur de l'URL et la transmet à l'action.

    Pour GET /articles/42, l'action reçoit id = '42', par défaut sous forme de texte : le convertir en entier reste à faire, sauf si la route impose un type.

  • Motif d'URL : de quoi s'agit-il ?

    Voir la réponse

    Modèle de chemin contenant des emplacements variables entre accolades, que l'application compare à l'URL reçue.

    /articles/{id} accepte /articles/42 et /articles/new, mais ni /articles ni /articles/42/comments : un emplacement ne couvre qu'un seul segment du chemin.

  • Le formulaire de création envoie POST /articles et reçoit 405 Method Not Allowed, alors que GET /articles affiche bien la liste. Quelle est la cause ?

    • Le formulaire est mal rempli et le serveur le refuse
    • L'action de création plante et l'application renvoie 405 par défaut
    • L'utilisateur n'est pas connecté, donc la méthode est interdite
    • La route /articles n'est déclarée que pour GET
    Voir la réponse

    La route /articles n'est déclarée que pour GET

    Le chemin est connu, la méthode ne l'est pas : c'est exactement un 405. Il manque une route POST /articles vers l'action de création. Un plantage donnerait 500, une saisie refusée un 400 ou 422, une session absente un 401 ou une redirection vers la connexion.