Recentemente, discussões têm surgido nos círculos de desenvolvimento web sobre se aplicativos web RESTful (conhecido como Client MVC, conhecido como única página) são uma boa ideia. Ou, mais precisamente, se eles são uma ideia melhor do que apenas servir HTML do servidor.
Agora, antes de eu dar minha humilde opinião, vamos definir o que estamos falando aqui. O padrão básico por trás dos aplicativos web RESTful é o seguinte: o servidor expõe um conjunto de endpoints REST que emitem XML ou JSON (geralmente o último), enquanto o Client (que normalmente é construído usando algum framework JavaScript MV *) consome esses endpoints.
Devo ressaltar que ambos os lados do argumento trazem alguns pontos muito válidos. Particularmente, o lado contra web apps RESTful aponta para custos não-triviais (na forma de aumento da complexidade e de problemas de desempenho) como motivos para não fazê-lo em cada app que você construir.
Eles trazem um importante ponto. Há um custo associado a Web Apps RESTful, assim como há um custo associado com um monte de outras coisas (Domain Driven Design é um exemplo popular). Se o custo não pode ser justificado, não deve ser incorrido.
Dito isso, eu acho que esse padrão estrutural é uma das tendências mais interessantes no desenvolvimento de software. Aqui está o porquê.
Forcing Function
Se você está construindo um web app RESTful, você é forçado a pensar sobre o seu domínio em termos de recursos e operações simples de CRUD nesses recursos. Muito tem sido escrito sobre o porquê de a orientação de recursos ser uma coisa boa, por isso não vou falar sobre essas razões aqui. Eu vou apenas dizer que, para mim, conseguir modularidade e baixo acoplamento via orientação de recurso parece ser a maneira menos elaborada de fazê-lo.
Em outras palavras, eu raramente sinto que estou forçando a metáfora de recursos quando falo sobre os recursos que meu aplicativo consumiria/criaria. Eu também acho mais natural e mais direto raciocinar sobre isso, especialmente quando comparado a outras camadas ou técnicas orientadas a serviços.
APIs gratuitas
Outro benefício de construir web apps RESTful é que você recebe um conjunto de APIs para seu domínio gratuitamente. Quer construir um cliente móvel? Não tem problema, é só usar essas APIs já desenvolvidas e testadas. Isso está em contraste gritante com aplicativos web “tradicionais”, nos quais expor seus dados para outros consumidores exige um novo esforço de desenvolvimento.
Agora, devo observar que você provavelmente vai precisar testar suas APIs antes de expô-las aos consumidores externos. Afinal de contas, nós tendemos a tomar atalhos quando temos o controle completo sobre o consumidor e o produtor das APIs. Isso é normal e razoável, pois o nível extra de rigor simplesmente não é necessário.
Então, provavelmente você terá que voltar e adicionar coisas como mecanismos adicionais de autenticação, validações mais robustas, fazer logs, códigos de resposta mais consistentes, mensagens de erro mais claras etc. Dito isso, o esforço para obter essas APIs preparadas para consumo externo é consideravelmente menor do que construí-las a partir do zero.
***
Artigo traduzido pela Redação iMasters, com autorização do autor. Publicado originalmente em http://tatiyants.com/restful-web-applications-are-good-for-you/