Executando verificação de segurança...
1

Arquitetura MVC para API é a melhor maneira de desenvolver api's?

Desde que comecei a desenvolver API's, eu comecei usando arquitetura MVC e ainda uso o mesmo ate hoje.
Mas recentemente me questionei o seguinte: "Será que este é o melhor jeito ou mais eficiente de desenvolver uma API?"
Então gostaria de perguntar isso a vocês. O que vocês acham sobre isso?

Carregando publicação patrocinada...
2

Como sempre, é um enorme "depende".

Se só um fosse bom não teria porque existir o outro.

O MVC se tornou prevalente, especialmente entre alguns grupos de pessoas. Muitas vezes o uso se dá porque a pessoa ouviu falar que é bom. Mas se ela não entende e não analisa os ganhos e problemas, e para isso é necessário estudo completo de computação, então ela adota como "boa prática". A única boa prática aceitável é entender o'que está escolhendo, eventualmente usando algum checklist que as pessoas chamam de "boa prática", mas ainda precisa entender o'que é aquilo, saber se o checklist é bom, nem todos são.

O próprio MVC foi e ainda é vendido como uma panaceia que resolve todos os problemas, quando ele faz muito pouco em muitos casos ou até prejudica em alguns.

Projetos complexos (a maioria nunca vai trabalhar em um), com muitas rotas, com maneiras de acessar o conteúdo muito diversificadas, pode sim se beneficiar do MVC, seja para entregar a página ou apenas dados para a API (o que dá na mesma, e qualquer framework que não entenda isso está fundamentalmente errado).

Para todo o resto é melhor fazer da forma mais simples possível. Nunca adicione complexidade se não se pagar muito bem. Hoje a indústria está pródiga em incentivar a complexidade sem apresentar ganhos claros.

Uma das grandes vantagens do PHP desde seu nascimento foi entregar um framework (sim ele é um framework muito interessante que tem uma linguagem de programação) simples que permite fazer páginas de forma muito fácil. Em determinado momento quiseram entregar também o complexo e começaram fazer framworks para rodar em cima do framework, em geral com MVC. Nenhum problema nisso, até a linguagem está se adaptando para entregar isso de forma melhor porque PHP original não fazia bem. Eu tenho críticas a isso, mas não vem ao caso aqui.

Acontece que em tecnologias que estão surgindo mais recentemente estão fazendo o caminho oposto porque viram que o MVC é um fardo que a maioria das aplicações não deveriam carregar. Até mesmo tecnologias consagradas estão indo para esse caminho.

Posso falar do que uso mais (uso PHP também só de forma simples, nem quero saber como faze MVC nele, PHP é ótimo para o simples). Em C# começou com um treco chamado WebForms que tentava imitar o jeito de desenvolver no desktop. Isso tem lá suas vantagens, mas se mostrou um erro.

Adotaram MVC como tecnologia web principal. E depois incorporaram a API ano mesmo sistema, e você só escolhia se mandava uma view ou um JSON.

Mais recentemente perceberam que estavam matando formigas com canhão na maioria dos casos, até para projetos internos. Então criaram algo chamado Minimal API. Como eu sempre fiz, passaram a recomendar o simples primeiro, e até que se prove que o mais complexo é melhor, não deve pensar nele. Não falarei de Razor Pages, que também é muito simples, porque não é o foco aqui, mas quero reforçar para o simples mesmo eu vou e PHP, do jeito mais simples possível, ele bem puro.

É um processo semelhante ao que acontece com linguagens mais modernas que estão preferindo não ter ou dificultar OOP, porque hoje se tem informações de que não é algo tão bom quanto as pessoas acreditavam. O mercado não costuma acompanhar isso tão facilmente. Cada vez mais o mercado é ditado pelo que "a web fala" e não por estudos conclusivos e especialistas no assunto demonstrando sua experiência.

Minha experiência mostra que MVC é menos eficaz na maioria dos casos, eficiência não acho que seja uma medida fácil de fazer ou importante aqui. Mas nunca é tão simples responder isso. Eu sei que todo mundo quer uma resposta muito objetiva, mas ela estará sempre errada.

Faz sentido?

Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

1
1

MVC é uma abordagem simples e bastante eficás para projetos simples e pequenos, já que suas 3 camadas são bem definidas como:Model,View e Controler. Aliás,camadas, isso nós remete a Arquitetura em Camadas que é um modelo de dividir a aplicação em camadas de responsabilidades lógicas. O MVC é o pattern mais famoso desse módelo de arquitetura.

E respondendo a pergunta:
"Será que este é o melhor jeito ou mais eficiente de desenvolver uma API?"

Depende

Seu projeto é simples? Se sim, não existe problema algum utilizar de uma abordagem mais simples. Não adianta fazer um overengineering, em outras palavras, vai matar formiga com uma bazuca.

Seu projeto é mais complexo, que envolve regras de negócios bem definidas, relacionamentos, respondabilidades, especificações? Então, já seja melhor partir pra uma outra abordagem, utilizando um padrão de projeto mais robusto com Ports and Adapters e Clean Architecture, junto com um Domain Driven Desing para uma melhor abordagem do desenvolvimento... Todos esses padrões e abodagens ajudam bastante na hora de desenvolver um sistema maior e mais robusto...

1

O que define se o que é melhor ou não é o projeto, por isso uma resposta direta ao seu questionamento é o famoso: DEPENDE.

Pelo que eu já vi até hoje, as aplicações no modelo Data Driven em sua maioria é bem atendido utilizando MVC, e não há nada de errado com isso, é até interessante por manter a simplicidade.

Mas... nada impede de você estudar outros modelos usados em projetos mais robustos. Só tenha cuidado em aplicar complexidade demais em um projeto em que o MVC se encaixa e atende bem.