O que Padrões de API REST para Spring Boot faz?
Fornece padrões de design e melhores práticas para APIs REST em projetos Spring Boot. Utilize ao criar ou revisar endpoints REST, DTOs, tratamento de erros, paginação, cabeçalhos de segurança, HATEOAS e padrões de arquitetura.
Padrões de Endpoints REST
- Use substantivos no plural para nomes de recursos:
/api/usuarios,/api/pedidos - Utilize verbos HTTP consistentes: GET para consulta, POST para criação, PUT para atualização completa, PATCH para atualização parcial, DELETE para remoção
- Inclua identificadores nos caminhos dos recursos:
/api/usuarios/{id} - Suporte versionamento via cabeçalho Accept ou prefixo de URL:
/api/v1/ - Considere uso de parâmetros de consulta para filtros e ordenação:
?nome=joao&pagina=0&tamanho=10
Estrutura de DTOs
- DTOs de requisição e resposta devem ser específicos para cada operação, evitando reutilização excessiva
- Utilize validação Bean Validation (
@NotBlank,@NotNull,@Size,@Email) nas classes de requisição - Documente campos com anotações Swagger/OpenAPI
- Prefira records do Java para imutabilidade em DTOs de resposta
Tratamento de Erros
- Implemente um handler global com
@RestControllerAdvice - Retorne uma estrutura JSON padronizada para erros: código HTTP, mensagem, timestamp, lista de erros de validação
- Use enums ou constantes para códigos de erro específicos do negócio
- Diferencie erros de validação de campos de erros de negócio
Paginação
- Utilize a interface
Pageabledo Spring Data para paginação e ordenação - Retorne a página no formato: conteúdo, número da página, tamanho da página, total de elementos, total de páginas
- Permita que o cliente especifique página (
page), tamanho (size) e ordenação (sort)
Cabeçalhos de Segurança
- Configure CORS adequadamente para produção
- Inclua cabeçalhos de segurança padrão:
X-Content-Type-Options,X-Frame-Options,Cache-Control - Utilize HTTPS em produção
- Considere autenticação e autorização com Spring Security e JWT
HATEOAS
- Implemente links HATEOAS nos recursos quando apropriado: links para self, coleções e operações relacionadas
- Utilize a biblioteca
spring-hateoasou adicione manualmente links no JSON - Facilite a descoberta de recursos pelo cliente
Padrões de Arquitetura
- Separe responsabilidades em camadas: Controller, Service, Repository, DTO, Entity
- Use interfaces para serviços, permitindo troca de implementação
- Evite expor entidades JPA diretamente ao cliente; sempre mapeie para DTOs
- Considere uso de padrões como Strategy, Factory e Builder quando apropriado
- Mantenha testes unitários e de integração para cada camada