Estudo das interfaces de programação, integração de sistemas distribuídos na camada de aplicação, padrões arquiteturais e protocolos modernos de transferência de dados.
Uma API (Application Programming Interface) funciona como um contrato ou uma fronteira bem definida através da qual componentes de software heterogêneos trocam dados e instruções sem a necessidade de intervenção humana na interface de usuário.
A evolução histórica dos serviços distribuídos divide-se em marcos de acoplamento:
Criado por Roy Fielding, o REST não é um protocolo ou uma ferramenta, mas sim um estilo arquitetural governado por 6 restrições obrigatórias (constraints):
Design de Recursos e URIs: No REST, as operações expõem substantivos e recursos, nunca ações/verbos na URL:
| Padrão Recomendado (Correto) | Antipadrão Comum (Incorreto) |
|---|---|
GET /api/v1/usuarios |
GET /api/getUsuarios |
DELETE /api/v1/usuarios/42 |
POST /api/usuarios/deletar?id=42 |
O RESTful utiliza nativamente os mecanismos semânticos estabelecidos pelas especificações do protocolo HTTP.
Embora o REST suporte múltiplos formatos, o JSON (JavaScript Object Notation) substituiu o XML por ser baseado em texto leve, de fácil parseamento computacional e menor consumo de banda na rede.
Exemplo Prático de Payload JSON (Requisição/Resposta):
{
"id": 1052,
"disciplina": "Serviços de Rede",
"status": "Ativo",
"carga_horaria": 80
}
Devido à natureza Stateless do REST, a segurança deve ser avaliada a cada requisição entrante. Nunca se utiliza sessões de servidor vinculadas a cookies tradicionais de navegadores.
O JWT (JSON Web Token) encapsula informações criptograficamente assinadas divididas em três partes (Header, Payload e Signature). É auto-contido e ideal para autenticação descentralizada em microsserviços.
Framework de autorização de mercado que permite aplicações terceiras obterem acesso limitado a recursos do usuário, utilizando delegação de papéis complexos através de tokens de escopo específico.
A arquitetura de sistemas evoluiu para além do modelo tradicional síncrono de Requisição/Resposta do REST: