Especificações
A seguir estão descritos os itens técnicos que devem ser atendidos no Gov.pi Conecta, com as boas práticas esperadas em cada especificação.
Padrão de API REST
As APIs devem ser RESTful, seguindo as melhores práticas de utilização do Protocolo HTTP.
Verbos do Protocolo HTTP
GET→ solicita a representação de um recurso, retornando apenas dados.POST→ submete uma entidade a um recurso específico, causando mudanças no estado ou efeitos no servidor.PUT→ substitui todas as representações atuais do recurso pela carga enviada.PATCH→ aplica modificações parciais em um recurso.DELETE→ remove um recurso específico.
Fonte: MDN Web Docs – Métodos HTTP
Padronização das rotas
As rotas devem seguir um padrão único para facilitar o consumo das APIs. Exemplos:
- Spinal Case:
/api/v1/lista-de-produtos - Snake Case:
/api/v1/lista_de_produtos - Camel Case:
/api/v1/listaDeProdutos - Pluralize:
/api/v1/produtos - Singularize:
/api/v1/produto
Evitar operações nos paths
Não utilizar verbos ou operações nos endpoints (ex.: /produtos/consultar, /produtos/apagar).
Os métodos HTTP já representam a operação:
GET /api/produtos→ consultar produtosPOST /api/produtos→ cadastrar produtoDELETE /api/produtos/{id}→ remover produto
Paths extensos
Evitar mais de 2 níveis de aninhamento após a URL base.
Exemplo a evitar:
GET /baseUrl/perfis/empresas/{sigla}/matriculas/{matriculaId}/colaboradores/{colaboradorId}/ferias/requisicoes
Códigos de resposta
Utilizar corretamente os códigos HTTP (2xx, 3xx, 4xx, 5xx).
- 200 (OK), 201 (Created), 204 (No Content)
- 400 (Bad Request), 401 (Unauthorized), 404 (Not Found)
- 500 (Internal Server Error)
Boas práticas necessárias
Versionamento
Os endpoints devem conter versão clara, geralmente na URL:
Exemplo: GET https://base-url.example.com/api/v1/produtos
Stateless
Cada requisição deve ser independente. A API não deve manter estado entre chamadas.
Autenticação
Usar padrões seguros de autenticação.
- Recomendado: OAuth2
- Aceitos: JWT, Basic Auth (desde que documentados corretamente)
Documentação aberta
Todas as APIs devem ter documentação clara de endpoints, requests e responses.
Exemplo: Swagger/OpenAPI.
Requisitos adicionais
JSON como padrão
As APIs devem aceitar e responder em JSON.
Definir o cabeçalho corretamente:
Content-Type: application/json
Página de healthcheck
Incluir endpoint de verificação simples da aplicação.
Exemplo:
GET /health → retorna status da API.
Cache
Permitir cache em respostas quando apropriado para melhorar desempenho.
Filtragem, ordenação e paginação
- Filtragem: permitir parâmetros para refinar resultados.
- Ordenação: permitir
sortpor campos relevantes. - Paginação: obrigatório em endpoints que retornam grandes volumes de dados.
Boas práticas de segurança
- Autenticação segura
Usar OAuth2 ou equivalente. - Comunicações HTTPS
Toda comunicação deve ser criptografada. - Não expor informações confidenciais em URLs
Nunca incluir credenciais, chaves ou tokens em parâmetros de URL.