Bonjour à tous,
Avant de commencer, ma question va être très conceptuelle est assez ardue à expliquer. Je vais donc prendre un exemple concret pour vous aider à bien comprendre ma pensée.
Prenons l'exemple d'un site web de réservation de chambre d'hôtel avec l'adresse http://letoh.com. Nous utilisons Symfony pour le serveur et une base de données SQLite.
Notre site web comporte deux URL :
qui affiche les informations d'un hotel donné par son identifiant (ici l'hôtel n°1).
qui réserve une chambre d'hôtel, les paramètres de la réservation sont donnés dans la requête POST
Nous avons donc deux contrôleurs : HotelController (qui affiche les informations d'un hôtel) et BookController qui insère une réservation dans la base de données. Ces deux contrôleurs effectuent des requêtes SQL qui, admettons, sont complexes.
Je souhaite maintenant créer une API (qui servira pour une application mobile, par exemple) qui sera accessible via l'URL http://api.letoh.com. Cette API renvoie des données au format JSON qui pourront être utilisées par mon application mobile.
- http://api.letoh.com/hotel/1
Renvoie un fichier JSON contenant les informations de l'hôtel n°1.
- http://api.letoh.com/book/
Insère une réservation dans la base de données et renvoie la réponse au format JSON (réussite ou échec).
Là aussi, nous avons deux contrôleurs pour traiter ces deux URL. Nous sommes d'accord, les requêtes effectuées par ces deux contrôleurs sont les mêmes que celles utilisées pour le site web.
Nous voilà au coeur de mon problème. Je suis obligé d'écrire deux fois la même chose.
J'ai pensé à une solution : les requêtes SQL sont uniquement écrites dans les contrôleurs de l'API. Exemple : un utilisateur se rend sur la page http://letoh.com/hotel/1.
- Le contrôleur effectue une requête
GET à l'API. - Le contrôleur de l'API effectue la requête SQL et renvoie le fichier JSON.
- Le contrôleur du site web récupère le fichier JSON et met en forme la page HTML.
Le problème est : comment effectuer une requête HTTP depuis un serveur en PHP ? Surtout, est-ce que cette solution est propre ? Et vous, comment voyez-vous le problème ?
Merci beaucoup 
Message édité le 19 avril 2016 à 13:47:34 par ZZeetopp