Aula 23: Prevenindo Registros Duplicados em Operações POST de APIs REST
Desenvolvimento de API REST: Construir, Testar e Solucionar Problemas
Ao utilizar o método POST para criar novos recursos, é essencial evitar registros duplicados.
Entradas duplicadas podem comprometer a integridade dos dados e causar comportamentos inesperados na sua API.
Estratégias para Evitar Duplicatas
- Validar os dados recebidos no servidor antes da inserção
- Usar restrições de unicidade nas colunas do banco de dados
- Verificar se já existem registros com os mesmos atributos-chave
- Retornar mensagens de erro informativas quando duplicatas forem detectadas
Exemplo: Validação no Lado do Servidor
Antes de adicionar um novo produto, verifique se já existe um produto com o mesmo nome:
POST /api/products
{
"name": "Smartphone X",
"price": 499.99,
"category": "Eletrônicos"
}
// Pseudocódigo do lado do servidor:
if(db.Products.Any(p => p.Name == newProduct.Name)) {
return Conflict("Produto já existe");
}
else {
db.Products.Add(newProduct);
db.SaveChanges();
return Created(newProduct);
}
Restrições no Nível do Banco de Dados
Implementar restrições de unicidade nas colunas do banco de dados (por exemplo, nome do produto ou SKU)
garante que duplicatas sejam prevenidas no nível do armazenamento de dados, mesmo se a lógica da aplicação falhar.
Boas Práticas
- Combine verificações no nível da aplicação com restrições no banco para máxima segurança
- Sempre retorne códigos de status claros (por exemplo, 409 Conflict) para detecção de duplicatas
- Documente os endpoints POST indicando quais campos devem ser únicos
- Use logs para monitorar tentativas de duplicatas e entender padrões de uso
Conclusão
Prevenir registros duplicados é essencial para manter a integridade dos dados e fornecer uma API REST confiável.
Validação adequada, restrições no banco de dados e tratamento claro de erros são componentes-chave desse processo.