{"id":1918,"date":"2026-04-04T18:34:00","date_gmt":"2026-04-04T21:34:00","guid":{"rendered":"https:\/\/www.erudio.com.br\/blog\/?p=1918"},"modified":"2026-05-10T18:39:27","modified_gmt":"2026-05-10T21:39:27","slug":"mcp-x-rest-por-que-o-backend-que-voce-conhecia-nao-e-suficiente-para-agentes-de-inteligencia-artificial","status":"publish","type":"post","link":"https:\/\/www.erudio.com.br\/blog\/mcp-x-rest-por-que-o-backend-que-voce-conhecia-nao-e-suficiente-para-agentes-de-inteligencia-artificial\/","title":{"rendered":"MCP x REST: por que o backend que voc\u00ea conhecia n\u00e3o \u00e9 suficiente para agentes de Intelig\u00eancia Artificial?"},"content":{"rendered":"\n<!--\n  T\u00cdTULO SUGERIDO: MCP x REST: por que o backend que voc\u00ea conhecia n\u00e3o \u00e9 suficiente para agentes de Intelig\u00eancia Artificial?\n  UTM CAMPAIGN: mcp-rest\n  TAGS SUGERIDAS: MCP, REST, API, Agentes de IA, LLM, Model Context Protocol, Spring AI, Backend, Anthropic, Intelig\u00eancia Artificial\n  INSTRU\u00c7\u00d5ES: Colar na aba \"Texto\" do editor cl\u00e1ssico ou no bloco \"HTML Personalizado\" do Gutenberg.\n               A URL do v\u00eddeo do YouTube ser\u00e1 convertida automaticamente em player embed pelo WordPress \u2014 n\u00e3o alterar para iframe.\n               Substituir [inserir diagrama aqui] pela imagem do diagrama no editor visual.\n-->\n\n<p style=\"margin-top: 20px;\">At\u00e9 aqui a rela\u00e7\u00e3o da maioria dos desenvolvedores com <strong>API<\/strong> foi basicamente a mesma: voc\u00ea exp\u00f5e um endpoint, documenta com Swagger e o cliente chega j\u00e1 sabendo o que vai pedir. Esse contrato funciona h\u00e1 d\u00e9cadas e ainda funciona bem para boa parte dos sistemas que a gente constr\u00f3i. O problema \u00e9 que no \u00faltimo ano surgiu um novo tipo de cliente que simplesmente n\u00e3o consegue seguir esse fluxo \u2014 e ele est\u00e1 mudando de forma silenciosa a forma como a gente vai construir software backend daqui em diante.<\/p>\n\n<h2>O problema do REST com agentes de IA<\/h2>\n\n<p>O REST foi desenhado para um mundo em que quem consome a API \u00e9 um humano ou uma aplica\u00e7\u00e3o constru\u00edda por um humano. Nos dois casos algu\u00e9m leu a documenta\u00e7\u00e3o antes, entendeu que existe um <code>GET \/flights<\/code>, escreveu o c\u00f3digo que faz essa chamada e definiu o que fazer com a resposta. O contrato entre cliente e servidor \u00e9 fechado em tempo de projeto. O cliente chega na requisi\u00e7\u00e3o j\u00e1 sabendo exatamente o que vai pedir.<\/p>\n\n<p>Esse modelo funcionou muito bem porque os clientes das nossas APIs sempre foram determin\u00edsticos. Um app mobile chama sempre os mesmos endpoints. Um sistema de parceiro integra contra uma lista fixa de opera\u00e7\u00f5es. A varia\u00e7\u00e3o \u00e9 pequena e previs\u00edvel.<\/p>\n\n<p>O <strong>agente de IA<\/strong> quebra essa premissa completamente. Um agente n\u00e3o foi programado para chamar um endpoint espec\u00edfico. Ele recebe um objetivo em linguagem natural \u2014 &#8220;marque uma passagem para Lisboa antes das 4 da tarde&#8221; \u2014 e precisa descobrir por conta pr\u00f3pria o que o servidor \u00e9 capaz de fazer para atingir esse objetivo. N\u00e3o existe c\u00f3digo escrito de antem\u00e3o para aquela intera\u00e7\u00e3o. O agente precisa explorar as capacidades dispon\u00edveis em tempo de execu\u00e7\u00e3o e decidir o que usar.<\/p>\n\n<p>O REST, por design, n\u00e3o tem resposta para isso. Ele pressup\u00f5e que o cliente j\u00e1 sabe o que existe. E quando o cliente \u00e9 um agente que ainda n\u00e3o sabe, o protocolo n\u00e3o oferece nenhum mecanismo nativo para que ele descubra.<\/p>\n\n<h2>O que o MCP muda na pr\u00e1tica<\/h2>\n\n<p>O <strong>MCP<\/strong> \u2014 <em>Model Context Protocol<\/em>, protocolo de contexto para modelos \u2014 foi criado pela Anthropic exatamente para preencher esse espa\u00e7o. A ideia central \u00e9 simples: em vez de expor endpoints que o cliente precisa conhecer de antem\u00e3o, o servidor MCP exp\u00f5e <strong>tools<\/strong> \u2014 ferramentas acompanhadas de descri\u00e7\u00f5es em linguagem natural que o pr\u00f3prio <strong>LLM<\/strong> \u2014 <em>Large Language Model<\/em>, modelo de linguagem de grande escala \u2014 consegue ler e interpretar.<\/p>\n\n<p>Quando um agente se conecta a um servidor MCP ele pergunta primeiro: &#8220;o que voc\u00ea \u00e9 capaz de fazer?&#8221; O servidor responde com a lista de tools dispon\u00edveis, cada uma com seu nome, sua descri\u00e7\u00e3o e os par\u00e2metros que aceita. O agente l\u00ea essas descri\u00e7\u00f5es, entende o que cada tool faz e decide em tempo de execu\u00e7\u00e3o quais vai acionar para resolver o problema que recebeu. N\u00e3o existe contrato fechado antes. A descoberta acontece na hora.<\/p>\n\n<img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"MCP x REST: diagrama comparativo\" src=\"https:\/\/www.erudio.com.br\/blog\/wp-content\/uploads\/2026\/05\/MCPxREST.png\" alt=\"Diagrama comparando o Mundo REST e o Mundo MCP\">\n\n<p>O diagrama acima resume bem essa diferen\u00e7a. No lado esquerdo temos o mundo REST: um humano ou uma aplica\u00e7\u00e3o faz requisi\u00e7\u00f5es HTTP com verbos e URLs fixas \u2014 <code>GET \/users<\/code>, <code>POST \/orders<\/code>, <code>PUT \/products\/42<\/code> \u2014 contra uma API cujos endpoints foram definidos antes e precisam ser conhecidos pelo cliente. No lado direito temos o mundo MCP: o Agente LLM n\u00e3o chega sabendo o que vai pedir. Ele primeiro descobre as tools dispon\u00edveis, depois decide qual chamar e por fim interpreta o resultado \u2014 tudo de forma aut\u00f4noma, em <em>runtime<\/em>. O contraste nas caracter\u00edsticas deixa isso ainda mais claro: enquanto o REST tem contrato fixo de URL + verbo + <em>schema<\/em> e \u00e9 <em>stateless<\/em> por natureza, o MCP exp\u00f5e ferramentas com <em>schema<\/em> e descri\u00e7\u00e3o em linguagem natural e mant\u00e9m contexto entre as chamadas, sendo <em>stateful<\/em> por design.<\/p>\n\n<p>Um exemplo concreto ajuda a entender o impacto disso. Pensa num site como o Decolar, que hoje precisa consumir as APIs da Latam, da Gol, da Azul e de v\u00e1rias outras companhias para pesquisar pre\u00e7os e hor\u00e1rios. Cada integra\u00e7\u00e3o \u00e9 um projeto \u00e0 parte: algu\u00e9m leu a documenta\u00e7\u00e3o de cada companhia, escreveu o c\u00f3digo espec\u00edfico para cada endpoint e tratou as particularidades de cada resposta.<\/p>\n\n<p>Com o MCP esse cen\u00e1rio muda. Imagina que voc\u00ea manda um comando de voz: &#8220;marque uma passagem para Lisboa no dia 20 de abril, quero chegar antes das 4 da tarde&#8221;. O agente acessa as tools que as companhias disponibilizam via MCP, descobre em tempo de execu\u00e7\u00e3o o que cada uma oferece, avalia as op\u00e7\u00f5es que atendem ao crit\u00e9rio de hor\u00e1rio e te apresenta as alternativas. Voc\u00ea escolhe e confirma o pagamento. Nenhuma integra\u00e7\u00e3o foi codificada previamente para aquela combina\u00e7\u00e3o espec\u00edfica de origem, destino e restri\u00e7\u00e3o de hor\u00e1rio. O agente montou o racioc\u00ednio na hora.<\/p>\n\n<p>Ainda n\u00e3o \u00e9 o cen\u00e1rio que temos hoje com todas as companhias a\u00e9reas \u2014 mas \u00e9 exatamente a dire\u00e7\u00e3o para onde o mercado est\u00e1 caminhando nos pr\u00f3ximos anos.<\/p>\n\n<h2>O que muda para quem desenvolve o backend<\/h2>\n\n<p>Essa mudan\u00e7a tem uma implica\u00e7\u00e3o direta na forma como voc\u00ea pensa a arquitetura do que est\u00e1 construindo.<\/p>\n\n<p>No REST voc\u00ea pensa em <strong>recursos<\/strong>: usu\u00e1rios, pedidos, passagens. Voc\u00ea exp\u00f5e opera\u00e7\u00f5es sobre esses recursos e o cliente precisa saber que <code>\/orders<\/code> existe e o que fazer com ele. A modelagem gira em torno de substantivos \u2014 o que o sistema tem \u2014 e os verbos HTTP cuidam das opera\u00e7\u00f5es.<\/p>\n\n<p>No MCP voc\u00ea passa a pensar em <strong>capacidades<\/strong>: o que um agente pode fazer no seu sistema? A modelagem gira em torno de a\u00e7\u00f5es \u2014 o que o sistema consegue executar. Voc\u00ea exp\u00f5e uma tool <code>cadastrar_cliente<\/code> com uma descri\u00e7\u00e3o clara o suficiente para o LLM entender quando e como us\u00e1-la. O pr\u00f3prio agente recebe um comando como &#8220;cadastre o cliente fulano, ele tem a idade tal, os documentos s\u00e3o esses e o endere\u00e7o \u00e9 esse&#8221; e executa o cadastro \u2014 sem que nenhum c\u00f3digo espec\u00edfico para aquela intera\u00e7\u00e3o tenha sido escrito antes.<\/p>\n\n<p>Bom, essa mudan\u00e7a de mentalidade traz consigo uma responsabilidade nova. Numa API REST mal documentada o preju\u00edzo cai sobre o desenvolvedor que vai ler a documenta\u00e7\u00e3o e perder tempo tentando entender o que cada endpoint faz. Num servidor MCP com descri\u00e7\u00f5es ruins ou amb\u00edguas o problema \u00e9 diferente: o LLM l\u00ea a descri\u00e7\u00e3o, interpreta do jeito errado e aciona a tool errada. O erro vai para produ\u00e7\u00e3o de forma silenciosa porque n\u00e3o existe um compilador, um teste de integra\u00e7\u00e3o ou uma revis\u00e3o de c\u00f3digo que pegue esse tipo de falha. A qualidade da descri\u00e7\u00e3o das tools passa a ser t\u00e3o cr\u00edtica quanto a qualidade do c\u00f3digo em si.<\/p>\n\n<h2>Os dois v\u00e3o coexistir<\/h2>\n\n<p>\u00c9 importante deixar claro que o MCP n\u00e3o veio para substituir o REST. Os dois respondem a problemas diferentes e v\u00e3o continuar existindo lado a lado \u2014 como o pr\u00f3prio diagrama resume: &#8220;os dois v\u00e3o coexistir \u2014 n\u00e3o \u00e9 uma substitui\u00e7\u00e3o&#8221;.<\/p>\n\n<p>Empresas como Stripe, GitHub e Atlassian j\u00e1 est\u00e3o lan\u00e7ando seus servidores MCP ao lado das suas APIs REST, n\u00e3o no lugar delas. Faz todo sentido. REST continua sendo a escolha certa para apps, browsers e integra\u00e7\u00f5es entre sistemas onde o cliente \u00e9 determin\u00edstico e sabe o que quer. MCP \u00e9 a escolha certa para agentes de IA, <em>copilots<\/em> e automa\u00e7\u00f5es aut\u00f4nomas onde o cliente precisa descobrir o que pode fazer.<\/p>\n\n<p>Na pr\u00e1tica o que vai acontecer \u00e9 que os backends v\u00e3o passar a ter duas interfaces de comunica\u00e7\u00e3o. A interface REST, que j\u00e1 existe e continua atendendo aplica\u00e7\u00f5es e integra\u00e7\u00f5es tradicionais. E a interface MCP, que exp\u00f5e as mesmas capacidades do sistema \u2014 ou um subconjunto delas \u2014 num formato que agentes conseguem consumir de forma aut\u00f4noma. N\u00e3o \u00e9 uma migra\u00e7\u00e3o. \u00c9 uma camada nova que se adiciona ao que j\u00e1 existe.<\/p>\n\n<p>A gente vai continuar desenvolvendo aplica\u00e7\u00f5es em que o cliente sabe o que quer. E vai passar a construir tamb\u00e9m aplica\u00e7\u00f5es em que o cliente descobre o que pode fazer. Essa segunda categoria \u00e9 nova, est\u00e1 crescendo r\u00e1pido e, na minha vis\u00e3o, os desenvolvedores que aprenderem a entregar esse tipo de solu\u00e7\u00e3o s\u00e3o os que v\u00e3o crescer mais na carreira daqui em diante.<\/p>\n\n<p><strong>Assista tamb\u00e9m:<\/strong> Como o MCP da Anthropic Matou o Backend Tradicional? De APIs para Humanos e APPs aos Agentes de AI<\/p>\n\n<iframe loading=\"lazy\" title=\"Como o MCP da Anthropic M4tou o Backend Tradicional? De APIs para Humanos e APPs aos Agentes de AI\" width=\"648\" height=\"365\" src=\"https:\/\/www.youtube.com\/embed\/horn2NX7twM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n\n<h2>Treinamentos relacionados com essa postagem<\/h2>\n\n<a href=\"https:\/\/pub.erudio.com.br\/formacao-spring-ai-2026-inteligencia-artificial-com-java-spring-boot-chatgpt-deepseek-claude-e-mcp?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-top: 8px; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Spring AI 2026: Intelig\u00eancia Artificial com Java, Spring Boot, ChatGPT, DeepSeek, Claude e MCP\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/31-spring-ai-java.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/inteligencia-artificial-com-dotnet-ai-e-dotnet-10-apps-inteligentes-com-chatgpt-openai-deepseek-e-ollama?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Intelig\u00eancia Artificial com .NET AI e .NET 10: Aplica\u00e7\u00f5es Inteligentes com ChatGPT, OpenAI, DeepSeek e Ollama\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/33-dotnet-ai.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/formacao-spring-ai-2026-inteligencia-artificial-com-kotlin-spring-boot-chatgpt-deepseek-claude-e-mcp?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Spring AI 2026: Intelig\u00eancia Artificial com Kotlin, Spring Boot, ChatGPT, DeepSeek, Claude e MCP\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/32-code-ai-kspring.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/formacao-spring-boot-2026-do-zero-ao-continuous-deployment-na-aws-e-gcp-com-java-docker-e-kubernetes?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Spring Boot 2026: do Zero ao Deploy na AWS e GCP com Java, Docker e Kubernetes\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/07-rest-java.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/formacao-spring-boot-com-kotlin-rest-apis-profissionais-do-zero-ao-deploy-na-aws-com-docker-e-kubernetes?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Spring Boot com Kotlin: REST APIs Profissionais do Zero ao Deploy na AWS com Docker e Kubernetes\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/18-rest-spring-kotlin.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/carreira-em-ti-do-zero-ao-exterior-curriculo-entrevistas-negociacao-e-crescimento-profissional?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Carreira em TI do Zero ao Exterior: Curr\u00edculo, Entrevistas, Negocia\u00e7\u00e3o e Crescimento Profissional\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/13-career.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/formacao-microsservicos-2026-do-zero-ao-deploy-na-google-cloud-com-spring-boot-kubernetes-e-docker?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Microsservi\u00e7os 2026: do Zero ao Deploy na Google Cloud com Spring Boot, Kubernetes e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/14-microservices-java.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/formacao-java-testing-2026-testes-automatizados-com-junit-mockito-spring-boot-tdd-e-testcontainers?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Java Testing 2026: Testes Automatizados com JUnit, Mockito, Spring Boot, TDD e TestContainers\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/24-tests-java.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/docker-e-kubernetes-2026-do-zero-ao-deploy-profissional-na-aws-azure-e-gcp-com-github-actions?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Docker e Kubernetes 2026: do Zero ao Deploy Profissional na AWS, Azure e GCP com GitHub Actions\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/10-docker-to-aws.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/meus-cursos?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Docker e Kubernetes 2026: do Zero \u00e0 Intelig\u00eancia Artificial com MCP Catalog e Docker Model Runner\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/09-docker.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/formacao-continuous-deployment-java-kubernetes-gcp-github-actions?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Continuous Deployment: do Zero ao Deploy com Java, Spring Boot, Docker, Kubernetes, Google Cloud (GCP) e GitHub Actions\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/29-cdpl-java-gcp.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/formacao-continuous-integration-delivery-java-aws-github-actions?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Continuous Integration e Delivery: do Zero ao Deploy com Java, Spring Boot, Docker, Amazon AWS e GitHub Actions\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/27-cicd-java-aws.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/formacao-continuous-integration-delivery-java-azure-github-actions?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Continuous Integration e Delivery: do Zero ao Deploy com Java, Spring Boot, Docker, Microsoft Azure e GitHub Actions\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/28-cicd-java-azure.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/meus-cursos?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Microsservi\u00e7os 2026: do 0 ao Deploy na Google Cloud com ASP.NET, .NET 10, Kubernetes e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/15-microservices-asp-net.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/asp-net-2026-do-0-a-azure-e-gcp-com-asp-net-10-docker-e-kubernetes?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o ASP.NET 2026: do Zero ao Deploy na Azure e GCP com .NET 10, Docker e Kubernetes\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/01-rest-asp-net.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/formacao-microsservicos-com-spring-cloud-spring-boot-kotlin-docker-e-zookeeper?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Forma\u00e7\u00e3o Microsservi\u00e7os com Spring Cloud, Spring Boot, Kotlin, Docker e Zookeeper\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/22-ms-kotlin.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/kotlin-para-desenvolvedores-java-domine-sintaxe-lambdas-generics-reflections-programacao-funcional-e-spring-boot?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Kotlin para DEV's Java: Domine Lambdas, Generics, Reflections, Programa\u00e7\u00e3o Funcional e Spring Boot\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/20-kotlin.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/crie-relatorios-profissionais-com-jasperreports-java-spring-boot-e-jaspersoft-studio?utm_source=blog-erudio&#038;utm_medium=organic&#038;utm_campaign=mcp-rest&#038;utm_content=footer\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%; display: block; margin-bottom: 8px;\" title=\"Crie Relat\u00f3rios Profissionais com JasperReports, Java, Spring Boot e JasperSoft Studio\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/refs\/heads\/main\/formacoes_blog\/30-jasper.png\">\n<\/a>\n","protected":false},"excerpt":{"rendered":"<p>At\u00e9 aqui a rela\u00e7\u00e3o da maioria dos desenvolvedores com API foi basicamente a mesma: voc\u00ea exp\u00f5e um endpoint, documenta com Swagger e o cliente chega j\u00e1 sabendo o que vai pedir. Esse contrato funciona h\u00e1 d\u00e9cadas e ainda funciona bem para boa parte dos sistemas que a gente constr\u00f3i. O problema \u00e9 que no \u00faltimo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1922,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[387,408,409],"tags":[321,406,407,221,322,316],"_links":{"self":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts\/1918"}],"collection":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1918"}],"version-history":[{"count":2,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts\/1918\/revisions"}],"predecessor-version":[{"id":1921,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts\/1918\/revisions\/1921"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/media\/1922"}],"wp:attachment":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}