IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Architecture URI + endpoints


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2024
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2024
    Messages : 24
    Par défaut Architecture URI + endpoints
    Bonjour à tous

    Créant un site web afin de m'entrainer à PHP, après avoir créer la base de données en MySQL et avoir terminé le front, je souhaite maintenant m'attaquer à la création d'une API REST en PHP afin que mon site soit accessible quel que soit le support. (Note : pour le moment je travaille avec WAMP)

    En faisant des recherches pour comprendre comment mettre en place une API, j'ai remarqué que la plupart du temps dans les exemples le fichier index.php (qui si j'ai bien compris est un routeur) va se charger de redistribuer les requêtes HTTP selon l'url (n'hésitez pas à me corriger si j'ai faux, car la notion de création d'API est encore très flou pour moi). Et donc le nom de la page se fera en fonction de l'endpoint mais pas l'inverse.


    Ainsi de ce que je comprends, la création de ce fichier index est supposé être la toute première étape de la création d'un site ?
    Dans mon cas j'ai déjà crée toutes mes pages php ainsi que mes requêtes avant de vouloir m'attaquer à l'API. Ma question serait donc de savoir comment "lier" mes pages aux requêtes de mon API REST vu que les endpoints seront forcément faux.

    Je m'excuse d'avance si ma question semble flou mais malheureusement c'est que le sujet est encore très flou pour moi malgré mes nombreuses recherches sur le sujet, c'est d'ailleurs la raison pour laquelle je me suis résolue à poster ce message sur le forum.

    Je remercie tout ceux qui prendront le temps de lire mon message et pourront m'aider à éclaircir le sujet

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 564
    Par défaut
    les clients http communiquent avec le serveur avec des url. si par exemple vous avez un site qui gère une liste de livres, vous pouvez avoir ces 2 formes
    • https://serveur/pages_publiques/livres/details_livre.php?titre=le-colonel-chabert, on trouve là le fichier details_livre.php dans un répertoire et un sous-répertoire.
    • https://serveur/pages_publiques/livres/le-colonel-chabert, cela peut être par exemple géré par une réécriture d'url qui redirige vers index.php?url=pages_publiques/livres/le-colonel-chabert, le code dans le fichier index.php va alors chercher la classe Pages_publiques/Livres pour générer le résultat


    quelque soit le structure des url, vous pouvez générer exactement le contenu html que vous souhaitez, le choix de l'url ne vous bloquera pas sur la façon de vous allez organiser votre code.

    en ce qui concerne les url de l'api, la différence principale est que ces url ne vont pas répondre avec du code html mais avec des données au format json.
    en reprenant l'exemple des livres, vous aurez par exemple :

    • /pages_publiques/livres/le-colonel-chabert l'affichage de la page publique avec les détails du livre
    • /pages_administration/connexion la page de connexion à l'espace d'administration
    • /pages_administration/livres/?id=8 la page d'édition du même livre
    • /api/livres/ le point de l'api qui retournera la liste des livres
    • /api/livres/8 le point de l'api qui retournera les informations du livre avec l'identifiant 8

    et dans les pages de l'affichage publique d'un livre, dans la page d'édition du livre et dans l'url de l'api qui retourne les informations d'un livre, vous allez retrouver à chaque fois un appel à la fonction qui va chercher dans la base de données les détails d'un livre. dans les 3 cas, ça sera la présentation des données qui va être différente.


    quelque soit les url, le plus important est de bien organiser les fichiers pour faciliter les évolutions futures. et cela passe par la séparation des différentes parties comme la préparation des données, l'affichage des données et le traitement des données.
    pour ma part, j'arrive beaucoup mieux à travailler quand je répartis le code dans beaucoup de fichiers dont certains peuvent très bien contenir seulement 2 lignes de code. à vous de voir comment vous êtes le plus à l'aise en testant différentes organisations.

    est ce que ces détails vous aident à voir un peu mieux comment organiser votre site, que ce soit les pages html ou les points de l'api ?

  3. #3
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2024
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2024
    Messages : 24
    Par défaut
    Bonjour

    Merci mathieu pour ta réponse, je ne sais pas pourquoi j'ai autant de mal à comprendre comment marche une API
    Pourtant je comprends le principe mais je bloque sur la manière dont tout est relié. Je ne comprends pas comment les pages que j'ai créer en php peuvent être reliés au endpoints et ainsi afficher les données par exemple.

    De ce que je croyais avoir compris avec une vidéo d'explication sur Youtube, on avait un fichier API avec toutes les fonctions nécessaires que ce soit pour le GET, PUT, POST, DELETE et un fichier index.php (un routeur) qui se chargeait de redistribuer les fonctions selon l'url appelée.
    Donc il fallait récupérer les données à partir de ces endpoints pour les mettre dans des variables qui permettent d'afficher aux utilisateurs les données.

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 564
    Par défaut
    la page qui affiche les détails ne va pas utiliser l'url de l'api. le lien entre les 2 parties est que les 2 appels à l'url vont appeler la même fonction de recherche des données.
    vous pouvez tester l'exemple que j'ai mis en pièce-jointe. les url à appeler sont les suivants :
    • administration/edition_livre.php?id=8
    • pages_publiques/details_livre.php?code=le-colonel-chabert
    • api/livre.php?id=8


    dans mon exemple, il y a un accès direct aux fichiers mais quand vous allez utiliser un framework, vous verrez plutot de l'url rewriting. les frameworks utilisent cela pour ne pas avoir besoin de dupliquer les fichiers et le principe reste le même : chaque requête http lance le code qui va récupérer les données et les afficher.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2024
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2024
    Messages : 24
    Par défaut
    Bonjour

    Merci mathieu pour ton explication, je comprends un peu mieux grâce à ta réponse et après d'autres recherches sur Internet.
    Merci beaucoup pour ton aide et d'avoir pris le temps de me répondre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Architecture] Interface entre C++ & Java
    Par yanis97 dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 13/07/2004, 15h46
  2. Réponses: 3
    Dernier message: 01/07/2003, 16h04
  3. architecture distribuée débutant
    Par jmt2 dans le forum CORBA
    Réponses: 2
    Dernier message: 13/03/2003, 12h52
  4. architecture
    Par pons dans le forum CORBA
    Réponses: 3
    Dernier message: 11/06/2002, 11h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo