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 le codage, j'ai réalisé que je ne comprenais pas la distinction entre le back-end frontal et l' 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:
- Je voudrais essayer le modèle Model-View-Controller. Je ne sais pas si cela change la question / réponse.
- L'API sera RESTful
- J'aimerais que mon serveur principal utilise ma propre API au lieu de permettre au serveur principal de tricher et d'appeler des requêtes spéciales. Je pense que ce style est plus cohérent.
Mes questions:
- Le front-end appelle-t-il le back-end qui appelle l'API? Ou le front-end appelle-t-il simplement l'API au lieu d'appeler le back-end?
- Le back-end exécute-t-il simplement une API et l'API renvoie le contrôle au back-end (où le back-end agit comme le contrôleur ultime, déléguant des tâches)?
Des réponses longues et détaillées expliquant le rôle de l'API aux côtés du serveur principal 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.
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 code PHP «frontal» n'émet pas
SELECT
directement des instructions SQL arbitraires , mais appelle plutôt des procédures stockées, du SQL préautorisé ou même des appels PHP distincts vers une instance entièrement différente de PHP qui s'exécute sur le serveur principal . Ces procédures stockées ou appels HTTP distincts sont eux-mêmes une API.La définition ne change pas même si nous autorisons une certaine impureté de notre conception. Si votre
PHP
fichier écrit et envoie une chaîne SQL directement à MySQL, C'EST TOUJOURS UNE API , quoique très inhabituelle que vous ne répéterez probablement pas.Notez qu'il est tout à fait possible que votre php frontal soit strictement synchrone, sans aucun vaudou AJAX. Si vous appelez les mêmes fonctions PHP externes 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 qu'interface de programmation d'application , après tout, et se réfère vraiment à 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 pour aucune autre raison que pour qu'il soit facile de savoir où chercher quand quelque chose se casse.
(Et le sujet de l'API publique est tout autre chose. Dans notre exemple ci-dessus, seule l'URL affichée dans le client est une "API publique". Tout le reste est, par essence, "privé". Comme dans, vous ne vous attendez pas tout code échappant à votre contrôle pour appeler votre API interne, et vous pouvez soit refuser catégoriquement ces résultats, soit vous réserver le droit de le faire à l'avenir.
la source
une API gère les requêtes http telles que GET, POST, FETCH, DELETE ... qui peuvent être utilisées en fonction de votre accès au jeton pour récupérer des données dans un format spécifique tel que json, xml, etc.
Ces "données" peuvent être utilisées dans votre propre application pour obtenir l'API (Application Programming Interface) qui est un service Web accessible au public pour recueillir des données qui pourraient être intéressantes pour certains publics.
Ces données peuvent renvoyer un ensemble de données représentant l'échec ou récupérer des données à partir de son serveur API
L'API est destinée à être back-end et peut donc être utilisée dans n'importe quel environnement frontal. Cela signifie qu'il peut être utilisé dans une application web, android, ios ... qui peut gérer les requêtes https
la source