O MVC é bem direto. Há um modelo, um controlador e uma vista. Quando criamos um site, tudo se reúne quando o ' cliente envia a solicitação de palavra-chave REST ao servidor -> o servidor corresponde à URL solicitada à ação do controlador -> que então chama o (s) modelo (s) para coleta / processamento de dados e obtém o resultado -> e retorna o resultado de volta ao cliente como uma página HTML (visualização) '.
E se estivermos falando de um serviço da Web API RESTful puro? Em seguida, o fluxo será algo como ' client envia solicitação de palavra-chave REST ao servidor -> o servidor corresponde à URL solicitada à ação do controlador -> que chama os modelos para coleta / processamento de dados, obtém o resultado -> e retorna o resultado de volta ao cliente em JSON '. O mesmo que antes, mas não há 'view' ... ou melhor, o JSON gerado pode ser pensado como uma 'view'. Em certo sentido, estamos utilizando apenas a parte MC do MVC. É assim que deve ser feito? Ou existem outros padrões mais adequados para um serviço somente API em vez do MVC?
fonte
View é uma camada responsável por exibir informações que podem ser interpretadas por um usuário / cliente do seu aplicativo (não diz que o usuário precisa ser uma pessoa real). JSON é um formato completamente válido para uma camada de visualização, os computadores entendem isso.
Desde que a camada de visualização publique informações que podem ser usadas por um usuário para afetar modelos em seu aplicativo, não importa como a visualização seja, ainda é uma visualização, uma camada atuando como um middleware entre o usuário e o sistema .
fonte
Martin Fowler talvez discordasse disso :
Se movendo...
OK, isso é um emaranhado
O MVC, seja o que for, é uma coleção de idéias para implementar interfaces de usuário.
O REST é uma coleção de restrições arquiteturais para a criação de aplicativos em larga escala.
A web, que é o que você está falando aqui, é um aplicativo gigante de gerenciamento de documentos criado usando a maioria dessas mesmas restrições.
As semelhanças que você está vendo entre os dois são (faça a sua escolha) atribuídas incorretamente ou superficiais.
Os RESTafarians têm um entendimento comum do HATEOAS , "hipertexto como o mecanismo do estado do aplicativo", e isso deve enviar alarmes tocando em sua cabeça - por que uma visão seria um mecanismo de estado ? Se questionarmos a premissa e procurarmos evidências adicionais, também poderemos notar duas coisas estranhas.
Primeiro, podemos tirar completamente o servidor HTTP da equação carregando o HTML do disco. O navegador está perfeitamente satisfeito com isso, desculpando algumas variações menores no comportamento que podem surgir da alteração no URL base. As visualizações geralmente não continuam a funcionar quando foram completamente desconectadas do modelo e do controlador assim.
Segundo, se observarmos cuidadosamente um navegador moderno, perceberemos que há várias visualizações do HTML. Várias visualizações de uma exibição parecem uma idéia realmente estranha, mas com certeza há a apresentação principal, com várias marcações de texto que respondem a gestos do usuário e, em seguida, há essa coisa "Visualização de origem" que mostra o HTML bruto e também responde a gestos do usuário. São tartarugas até o fim!
A resposta para o enigma, é claro, é que o HTML não é a visão. A coleção de widgets no navegador é a visualização e eles estão em comunicação com o Document Object Model , que foi inicializado pela leitura do HTML.
Em outras palavras, o HTML é uma representação do estado, como Roy T. Fielding prometeu.
Mais corretamente, o mesmo de antes: não há visualização. O JSON, assim como o HTML, é uma representação de estado, adequada para cruzar os limites do processo.
Pense em "DTO" ou "Mensagem" e suas inferências terão muito menos probabilidade de se desviar.
fonte
Passar o JSON como uma visualização ou usá-lo como um modelo de visualização para construir a visualização não viola o padrão.
Estou usando a mesma arquitetura no aplicativo atual em que estou trabalhando e está funcionando muito bem. Juntamente com uma estrutura JS agradável, você pode criar alguns designs realmente responsivos.
Honestamente, não faço ideia. Mas acho que se você usa MVC ou não em uma API não é tão importante. Use o que achar conveniente. Ao falar sobre serviços da Web, há aspectos muito mais importantes a serem considerados (que não estão diretamente relacionados ao MVC), por exemplo, segurança, consistência, disponibilidade etc.
fonte