J'essaie d'écrire un site Web d'entreprise "standard". Par "standard", je veux dire que ce site exécute le HTML5, CSS et Javascript habituel pour le front-end, un back-end (pour traiter les trucs) et exécute MySQL pour la base de données. C'est un site CRUD de base: le front-end fait juste ce que la base de données a en magasin; le backend écrit dans la base de données tout ce que l'utilisateur entre et effectue un traitement. Tout comme la plupart des sites.
En créant mes référentiels Github pour commencer à coder, j'ai réalisé que je ne comprenais pas la distinction entre le front-end back-end, et le [~ # ~] api [~ # ~]. Une autre façon de formuler ma question est: où l'API entre-t-elle dans cette image?
Je vais énumérer quelques détails supplémentaires, puis les questions que j'ai - j'espère que cela vous donnera une meilleure idée de ma véritable question, car je suis tellement confus que je ne connais pas la question précise à poser.
Quelques détails supplémentaires:
Mes questions:
Des réponses longues et détaillées expliquant le rôle de l'API aux côtés du back-end front-end sont encouragées. Si la réponse dépend du modèle de programmation (modèles autres que le modèle Model-View-Controller), veuillez décrire ces autres façons de penser l'API. Merci. Je suis très confus.
Je pense que vous êtes confus par la façon dont le terme API est utilisé à mauvais escient et abusé par de nombreux développeurs Web.
Esquissons l'architecture d'un site web "typique", avec à la fois un "front-end" et un "back-end". Et comme c'est un site internet, nous aurons aussi explicitement un "client". (Puisqu'il n'y a aucun moyen pour JavaScript dans un navigateur d'appeler directement MySQL sur un serveur.)
Pour plus de clarté, les termes que nous utilisons sont:
Pour un programme correctement conçu, chacun de ces composants possède une API privée pour communiquer avec les autres. Le "front-end" PHP n'émet pas directement des instructions SQL SELECT
arbitraires, mais appelle plutôt des procédures stockées, du SQL pré-autorisé ou même des PHP appelle une instance entièrement différente de PHP qui exécute sur le serveur principal. Ces procédures stockées ou appels HTTP distincts sont eux-mêmes un API.
La définition ne change pas même si nous autorisons une certaine impureté de notre conception. Si votre fichier PHP
écrit et envoie une chaîne SQL directement à MySQL, IT IS STILL AN API , quoique très inhabituel que vous ne répéterez probablement pas.
Notez qu'il est tout à fait possible que votre PHP frontal soit strictement synchrone, sans aucun AJAX vaudou que ce soit. Si vous appelez les mêmes fonctions externes PHP dans ledit fichier synchrone, vous pouvez les considérer comme utilisant la même API que la version côté client, bien que l'utilisation du terme "API" ici ne donne pas vraiment de clarté.
Une API en tant que Application Programming Interface , après tout, et fait vraiment référence à chaque fois qu'un programme appelle en dehors de son propre processus. Si vous écrivez un projet qui a à la fois un front-end et un back-end, que ce soit AJAX/PHP/MySQL comme ci-dessus ou MS Access/SQL Server, il vaut la peine de spécifier explicitement comment vous vous appellerez, si ce n'est pour aucune autre raison que de faire il est facile de savoir où chercher en cas de rupture.
(Et le sujet de API publique est tout autre chose. Dans notre exemple ci-dessus, seule l'URL affichée dans le client est une "API publique". le reste est, par essence, "privé". Comme dans le cas, vous ne vous attendez pas à ce qu'un code indépendant de votre volonté appelle votre API interne, et vous refusez carrément de tels résultats ou vous vous réservez le droit de le faire à l'avenir.