Pular para o conteúdo

Este material apresenta uma visão estruturada sobre Web Services, seu papel na integração entre sistemas e as tecnologias mais comuns para construir aplicações backend acessíveis pela Web.

Mais do que decorar nomes como REST, SOAP ou gRPC, o objetivo aqui é entender por que serviços existem, como se comunicam e quais decisões arquiteturais afetam interoperabilidade, desempenho e manutenção.

Um Web Service é um serviço de software exposto por uma aplicação para que outro sistema possa consumi-lo por meio de uma rede, geralmente utilizando protocolos da pilha Web, como HTTP e HTTPS.

Na prática, isso significa que uma aplicação pode disponibilizar funcionalidades como:

  • consultar produtos;
  • registrar usuários;
  • processar pagamentos;
  • gerar previsões meteorológicas;
  • integrar dados com sistemas externos.

Um Web Service normalmente não é consumido diretamente por pessoas, mas sim por:

  • aplicações frontend;
  • aplicativos mobile;
  • outros sistemas corporativos;
  • microsserviços;
  • scripts de automação e integrações.

Sistemas modernos raramente funcionam isolados. Uma loja virtual, por exemplo, pode depender de vários serviços diferentes:

  • um serviço para autenticação;
  • outro para catálogo de produtos;
  • outro para pagamentos;
  • outro para cálculo de frete;
  • outro para notificações por e-mail ou WhatsApp.

Os Web Services permitem que esses sistemas conversem entre si de forma padronizada, reduzindo acoplamento e ampliando a possibilidade de integração com tecnologias diferentes.

Um Web Service deve poder ser consumido por clientes implementados em linguagens, sistemas operacionais e plataformas diferentes.

Exemplo:

  • backend em Java com Spring;
  • aplicativo mobile em Kotlin;
  • painel administrativo em React;
  • serviço parceiro em Python.

Se todos seguem o mesmo contrato de comunicação, conseguem interoperar mesmo com stacks diferentes.

A lógica do serviço pode ser implantada em ambientes diferentes, como máquinas locais, servidores próprios, VPS ou nuvem, sem exigir mudanças significativas para quem consome a API.

Na prática, clientes acessam um contrato exposto por URL, protocolo e formato de dados, e não a implementação interna do serviço.

Web Services podem ser projetados para atender muitos clientes simultaneamente, usando técnicas como:

  • balanceamento de carga;
  • cache;
  • filas;
  • replicação;
  • conteinerização e orquestração.

Os termos costumam aparecer como sinônimos, mas existe uma nuance útil:

  • Web Service enfatiza o serviço exposto pela rede;
  • Web API enfatiza a interface pública usada para acessar esse serviço.

Em contexto profissional, especialmente em desenvolvimento moderno, Web API é o termo mais frequente para serviços HTTP que expõem dados e operações para outros sistemas.

Exemplo:

  • o sistema de mapas do Google expõe uma API;
  • esse recurso é entregue por meio de um serviço acessível pela Web.

Alguns serviços amplamente utilizados na indústria:

  • Google Maps API: mapas, geolocalização e rotas;
  • OpenWeather API: dados meteorológicos;
  • OpenAI API: modelos de linguagem e geração multimodal;
  • GitHub API: repositórios, issues, pull requests e automações;
  • Stripe API: pagamentos, assinaturas e faturamento.

Esses exemplos mostram que Web Services não se limitam a páginas HTML. Eles também operam como infraestrutura para integrações e produtos digitais completos.

Na disciplina, o foco principal está em serviços acessados por HTTP e HTTPS.

O HTTP é o protocolo de aplicação mais usado para comunicação entre cliente e servidor na Web. Ele organiza a troca de mensagens em requisições e respostas.

Exemplo conceitual:

GET /produtos/10 HTTP/1.1
Host: api.exemplo.com
Accept: application/json

Resposta:

HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 10,
"nome": "Teclado"
}

O HTTPS é o HTTP executado sobre uma camada segura com TLS. Isso adiciona:

  • confidencialidade;
  • integridade;
  • autenticação do servidor.

Em produção, o uso de HTTPS é praticamente obrigatório para APIs públicas e sistemas que lidam com autenticação, dados sensíveis ou transações.

Para que clientes diferentes consigam interpretar a informação trocada, o conteúdo precisa ser serializado em um formato padronizado.

Formatos comuns:

  • JSON;
  • XML;
  • YAML;
  • CSV;
  • text/plain.

Hoje é o formato mais comum em APIs HTTP modernas.

{
"nome": "Mouse",
"preco": 89.9,
"disponivel": true
}

Vantagens:

  • leve;
  • simples de ler;
  • compatível com praticamente toda linguagem moderna.

Muito usado em integrações legadas e em padrões como SOAP.

<produto>
<nome>Mouse</nome>
<preco>89.90</preco>
</produto>

Embora seja mais verboso que JSON, ainda aparece bastante em ambientes corporativos e integrações governamentais.

Há várias formas de estruturar serviços. Nem todas são “arquiteturas” no sentido estrito, mas representam abordagens importantes de comunicação entre sistemas.

SOAP é um protocolo padronizado de troca de mensagens, normalmente usando XML. Ele foi muito adotado em sistemas corporativos porque oferece contratos formais e padrões adicionais para segurança, transações e confiabilidade.

Características:

  • forte padronização;
  • mensagens em XML;
  • integração comum com WSDL;
  • frequente em sistemas legados e integrações enterprise.

REST é um estilo arquitetural baseado em recursos identificados por URLs e manipulados por métodos HTTP, como GET, POST, PUT e DELETE.

Exemplo:

  • GET /produtos lista produtos;
  • GET /produtos/10 detalha um produto;
  • POST /produtos cria um produto;
  • DELETE /produtos/10 remove um produto.

Hoje, APIs REST com JSON são o padrão mais frequente em aplicações web e mobile.

gRPC é uma tecnologia de comunicação remota baseada em contratos definidos com Protocol Buffers. Ela costuma ser usada em comunicação entre serviços, com foco em desempenho e tipagem forte.

Vantagens:

  • alta performance;
  • contratos explícitos;
  • suporte a streaming;
  • boa interoperabilidade entre linguagens.

GraphQL é uma linguagem de consulta e um runtime para APIs. Em vez de vários endpoints fixos, o cliente consulta exatamente os campos de que precisa.

Ele é útil quando:

  • há muitos relacionamentos entre dados;
  • diferentes clientes precisam de projeções diferentes;
  • deseja-se reduzir overfetching e underfetching.

WebSocket não é um estilo arquitetural no mesmo nível de REST ou SOAP, mas um protocolo para comunicação bidirecional e persistente entre cliente e servidor.

É útil em cenários como:

  • chats;
  • jogos online;
  • dashboards em tempo real;
  • notificações instantâneas.

Cada tecnologia atende melhor a contextos diferentes.

Tecnologia Formato mais comum Melhor uso
REST JSON APIs CRUD, integração web e mobile
SOAP XML Integrações corporativas com contrato formal
gRPC Protocol Buffers Comunicação entre serviços com foco em desempenho
GraphQL JSON Consultas flexíveis com diferentes necessidades de cliente
WebSocket Frames persistentes Atualizações em tempo real

Essa comparação ajuda a evitar a ideia de que existe uma única solução ideal para todos os cenários.

Um contrato de API define como clientes e servidores se comunicam. Isso inclui rota, método HTTP, formato do corpo, cabeçalhos e status esperados.

Requisição:

POST /produtos HTTP/1.1
Host: api.exemplo.com
Content-Type: application/json
{
"nome": "Mouse Gamer",
"preco": 149.90
}

Resposta esperada:

HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 101,
"nome": "Mouse Gamer",
"preco": 149.90
}

Quando esse contrato é bem definido, clientes diferentes conseguem consumir o serviço com previsibilidade.

Frameworks oferecem abstrações prontas para receber requisições, definir rotas, validar dados, serializar respostas e integrar com banco de dados.

Alguns exemplos:

  • Spring Web para Java;
  • NestJS e Express para Node.js;
  • Flask para Python;
  • Laravel para PHP.
@RestController
public class HelloWorldController {
@GetMapping("/")
public String olaMundo() {
return "Ola mundo";
}
}
import { Controller, Get } from '@nestjs/common';
@Controller()
export class AppController {
@Get()
getHello(): string {
return 'Hello World!';
}
}
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Servidor em execucao na porta 3000');
});

Independentemente da linguagem, a ideia é a mesma: expor um endpoint que recebe uma requisição e devolve uma resposta.

Ao desenvolver Web Services, duas abordagens arquiteturais aparecem com frequência.

No modelo monolítico, várias funcionalidades da aplicação ficam no mesmo projeto e geralmente são implantadas juntas.

Vantagens:

  • simplicidade inicial;
  • menos complexidade operacional;
  • fácil desenvolvimento em projetos pequenos.

Desvantagens:

  • crescimento pode dificultar manutenção;
  • deploy único para todo o sistema;
  • maior acoplamento entre módulos.

No modelo de microsserviços, o sistema é dividido em serviços menores e especializados.

Vantagens:

  • escalabilidade mais granular;
  • autonomia entre times;
  • deploy independente por serviço.

Desvantagens:

  • maior complexidade de infraestrutura;
  • desafios de observabilidade e segurança;
  • comunicação distribuída mais difícil.

Em muitas situações educacionais e em projetos pequenos, começar com um monolito bem organizado é mais saudável do que adotar microsserviços cedo demais.

Depois de implementado, um serviço precisa ser disponibilizado em uma infraestrutura acessível pela rede.

Opções comuns:

  • servidor físico: máquina própria gerenciada localmente;
  • VPS: servidor virtual alugado de um provedor;
  • nuvem: serviços gerenciados ou infraestrutura em provedores como AWS, Azure e Google Cloud.

Além da hospedagem, deploy de APIs costuma envolver:

  • configuração de domínio;
  • certificados TLS;
  • variáveis de ambiente;
  • banco de dados;
  • logs e monitoramento.
  • Definir contratos de entrada e saída com clareza.
  • Escolher códigos HTTP coerentes com o resultado da operação.
  • Validar dados recebidos antes de processá-los.
  • Evitar expor detalhes internos desnecessários.
  • Versionar APIs quando mudanças quebrarem compatibilidade.
  • Documentar endpoints, formatos e exemplos de uso.

Neste tópico você viu que Web Services são a base da integração entre aplicações modernas. Eles permitem interoperabilidade entre plataformas, expõem funcionalidades pela rede e podem adotar diferentes abordagens, como REST, SOAP, gRPC, GraphQL e WebSocket, dependendo do contexto.

Também vimos que frameworks simplificam a implementação, e que decisões de arquitetura, formato de dados e infraestrutura afetam diretamente manutenção, desempenho e capacidade de evolução dos sistemas.