MVC est assez simple. Il y a un modèle, un contrôleur et une vue. Lorsque nous créons un site Web, tout se rassemble lorsque le client envoie une demande de mot clé REST au serveur -> le serveur correspond à l'URL demandée pour l'action du contrôleur -> qui appelle ensuite le ou les modèles pour la collecte / le traitement des données, obtient le résultat -> et renvoie le résultat au client sous forme de page HTML (affichage) '.
Et si nous parlons d'un service Web API RESTful pur? Ensuite, le flux avec quelque chose comme `` le client envoie une requête de mot clé REST au serveur -> le serveur correspond à l'URL demandée à l'action du contrôleur -> qui appelle ensuite le ou les modèles pour la collecte / le traitement des données, obtient le résultat -> et renvoie le résultat est renvoyé au client en JSON '. Comme auparavant, mais il n'y a pas de «vue» ... ou plutôt, le JSON généré peut être considéré comme une «vue». Dans un sens, nous n'utilisons que la partie MC de MVC. Est-ce ainsi que cela devrait être fait? Ou existe-t-il d'autres modèles mieux adaptés pour un service uniquement API au lieu de MVC?
la source
View est une couche chargée d'afficher des informations qui peuvent être interprétées par un utilisateur / client de votre application (cela ne dit pas que l'utilisateur doit être une personne réelle). JSON est un format complètement valide pour une couche de vue, les ordinateurs le comprennent.
Tant que la couche de vue publie des informations qui peuvent être utilisées par un utilisateur pour affecter des modèles dans votre application, peu importe à quoi ressemble la vue, c'est toujours une vue, une couche agissant comme un middleware entre l'utilisateur et le système .
la source
Martin Fowler serait peut-être en désaccord avec ceci :
Continuons ...
OK, c'est un peu un enchevêtrement
MVC, quel qu'il soit, est une collection d'idées pour implémenter des interfaces utilisateur.
REST est un ensemble de contraintes architecturales pour la construction d'applications à grande échelle.
Le Web, dont vous parlez ici, est une application de gestion de documents géante construite en utilisant la plupart de ces mêmes contraintes.
Les similitudes que vous voyez entre les deux sont (faites votre choix) incorrectement attribuées ou superficielles.
Les RESTafariens ont une compréhension commune de HATEOAS , "l'hypertexte comme moteur de l'état de l'application", et cela devrait envoyer des alarmes qui résonnent dans votre tête - pourquoi une vue serait-elle un moteur de l' état ? Si nous remettons en question la prémisse et recherchons des preuves supplémentaires, nous pouvons également remarquer deux choses étranges.
Tout d'abord, nous pouvons retirer complètement le serveur HTTP de l'équation en chargeant le HTML à partir du disque. Le navigateur est parfaitement satisfait de cela, excusant certaines variations mineures de comportement pouvant résulter du changement d'URL de base. Les vues ne continuent généralement pas de fonctionner lorsqu'elles sont complètement déconnectées du modèle et du contrôleur.
Deuxièmement, si nous observons attentivement un navigateur moderne, nous remarquerons qu'il existe plusieurs vues du HTML. Plusieurs vues d'une vue semblent être une idée vraiment étrange, mais bien sûr, il y a la présentation principale, avec un tas de balisage de texte qui répond aux gestes de l'utilisateur, et puis il y a cette chose "Vue source" qui montre le HTML brut et répond également à gestes de l'utilisateur. C'est des tortues tout le long!
La réponse à l'énigme, bien sûr, est que le HTML n'est pas la vue. La collection de widgets dans le navigateur est la vue, et ils sont en communication avec le modèle d'objet de document , qui a été initialisé en lisant le HTML.
En d'autres termes, le HTML est une représentation de l'état, tout comme Roy T. Fielding l' avait promis.
Plus correctement, comme avant: il n'y a pas de vue. Le JSON, tout comme le HTML, est une représentation de l'état, appropriée pour franchir les frontières du processus.
Pensez «DTO» ou «Message» et vos inférences seront beaucoup moins susceptibles de vous induire en erreur.
la source
Passer le JSON comme vue ou l'utiliser comme modèle de vue pour construire la vue ne viole pas le motif.
J'utilise la même architecture dans l'application actuelle sur laquelle je travaille et cela fonctionne très bien. Avec un joli cadre JS, vous pouvez créer des conceptions vraiment réactives.
Honnêtement, aucune idée. Mais je pense que si vous utilisez MVC ou non dans une API n'est pas si important. Utilisez tout ce qui vous convient. Lorsque l'on parle de services Web, il y a des aspects beaucoup plus importants à considérer (qui ne sont pas directement liés à MVC), par exemple la sécurité, la cohérence, la disponibilité, etc.
la source