HTTP
Diferente de TCP, que entrega um fluxo de bytes, HTTP define métodos, campos, status e representações no nível de aplicação. A semântica atual está em RFC 9110; HTTP/1.1 usa RFC 9112 sobre TCP, HTTP/2 usa RFC 9113 e HTTP/3 usa RFC 9114 sobre QUIC. A adoção é barata por ampla compatibilidade, mas exige servidor, autenticação e TLS; sem isso, APIs de casa inteligente ficam expostas a interceptação, abuso e comandos não autorizados.
↗ Wikidata · Q8777HTTP é o protocolo de aplicação usado para trocar mensagens entre clientes, servidores, proxies e gateways. Sua unidade central é a requisição seguida de uma resposta. A requisição possui método, alvo, campos e conteúdo opcional. A resposta possui código de status, campos e conteúdo. A semântica é independente da versão de transporte. RFC 9110, publicada em 2022, define métodos, status, cache, autenticação, conteúdo e regras comuns. HTTP/1.1 é especificado em RFC 9112 e usa mensagens textuais sobre conexões TCP. HTTP/2, RFC 9113, introduz enquadramento binário, multiplexação de streams e compressão de cabeçalhos sobre uma conexão, normalmente protegida por TLS. HTTP/3, RFC 9114, leva a mesma semântica para QUIC sobre UDP e reduz o bloqueio entre streams causado por perda no transporte TCP. Em casa inteligente, HTTP aparece em APIs REST de hubs, câmeras, inversores, medidores, Home Assistant, Node-RED, gateways e serviços cloud. Um cliente pode executar `GET /api/states` para ler, `POST /api/services/light/turn_on` para comandar ou receber um arquivo de firmware. O protocolo não define o significado do recurso. O contrato da API faz. JSON é comum, mas HTTP também transporta CBOR, imagens, vídeo, HTML, arquivos e Protocol Buffers. O custo de adoção é baixo porque sistemas operacionais, navegadores, linguagens, proxies e ferramentas já implementam. Essa conveniência traz dependências. O servidor precisa de TLS, autenticação, autorização, limites, logs e atualização. Uma API HTTP aberta numa VLAN não é segura apenas por estar na rede local. Dispositivos infectados podem alcançar. HTTPS protege confidencialidade e integridade em trânsito. A autenticação por token, certificado ou sessão identifica. A autorização decide se o usuário pode destravar uma porta. Métodos têm propriedades. GET, HEAD, PUT e DELETE são definidos como idempotentes em sua semântica; POST não é necessariamente. Implementações podem violar. Uma API não deve usar GET para ligar relé porque caches, prefetch e crawlers podem repetir. Status precisam ser corretos: 200 sucesso, 201 criação, 202 aceitação assíncrona, 204 sem conteúdo, 400 pedido inválido, 401 autenticação necessária, 403 proibido, 404 ausente, 409 conflito, 429 limite e 5xx falha do servidor. O cliente não deve tratar qualquer 2xx como confirmação física sem contrato. Um 202 pode apenas enfileirar. Timeouts são essenciais. Sem eles, automações ficam presas. Retentativas precisam considerar idempotência. Cabeçalhos `ETag` e `If-Match` ajudam controle de concorrência. Cache reduz carga, mas estados de fechadura e presença exigem política. `Cache-Control: no-store` pode ser apropriado. CORS controla navegadores, não é autenticação. Cookies precisam de Secure, HttpOnly e SameSite. Proxies alteram cabeçalhos. A confiança em `X-Forwarded-For` deve ser limitada. Para eventos em tempo real, WebSocket ou SSE podem ser melhores que polling. HTTP continua no handshake e na gestão. O protocolo é maduro e interoperável, mas a qualidade depende do contrato e da implementação.
- Ecossistema universal: bibliotecas, navegadores, proxies, gateways, ferramentas e observabilidade estão disponíveis em praticamente qualquer plataforma, reduzindo custo de integração.
- Semântica padronizada de métodos, status, cache e representação facilita contratos entre Home Assistant, aplicativos, hubs, clouds e serviços de terceiros.
- Funciona sobre várias gerações de transporte: HTTP/1.1, HTTP/2 e HTTP/3 preservam o modelo de aplicação e permitem evolução sem redesenhar todos os recursos.
- Integra segurança madura por TLS, certificados, OAuth, OIDC, mTLS e políticas de gateway, desde que configuradas corretamente.
- É adequado a APIs de configuração, comandos, consulta, firmware e administração, podendo coexistir com WebSocket, SSE, MQTT e brokers para eventos.
- O protocolo não fornece autenticação nem autorização por padrão; HTTP sem TLS e endpoints locais abertos expõem dados e comandos.
- Cabeçalhos e mensagens têm overhead maior que protocolos binários compactos em dispositivos restritos; CoAP ou MQTT podem consumir menos.
- Modelo requisição-resposta não entrega eventos espontâneos sozinho; polling aumenta tráfego e WebSocket/SSE adicionam conexões persistentes.
- Caches, proxies, retries e métodos mal usados podem duplicar ações ou servir estado obsoleto; o contrato precisa ser desenhado com idempotência.
- A ampla extensibilidade cria diferenças entre implementações e riscos de parsing, headers confiáveis, CORS, cookies e configuração de proxy.