Best Practices¶
Recommandations et patterns pour utiliser SpringFlow efficacement.
Design Patterns¶
1. Une Entité = Une Ressource REST¶
// ✅ Bon
@Entity
@AutoApi(path = "products")
public class Product { ... }
// ❌ Éviter : entités internes
@Entity // Pas de @AutoApi
public class ProductAuditLog { ... }
2. Utiliser @Hidden pour Données Sensibles¶
@Entity
@AutoApi(path = "users")
public class User {
@Hidden
private String password; // Jamais exposé dans l'API
@Hidden
private String apiToken;
}
3. @ReadOnly pour Champs Calculés¶
@Entity
@AutoApi(path = "orders")
public class Order {
@ReadOnly
private BigDecimal totalAmount; // Calculé, pas modifiable
@ReadOnly
private LocalDateTime createdAt;
}
Validation¶
Valider au Bon Niveau¶
@Entity
@AutoApi(path = "users")
public class User {
@NotBlank(message = "Name required")
@Size(min = 3, max = 50)
private String name;
@Email
@NotBlank
private String email;
}
Sécurité¶
Protéger les Endpoints Sensibles¶
Performance¶
Lazy vs Eager¶
// ✅ Préférer LAZY
@ManyToOne(fetch = FetchType.LAZY)
private Category category;
// ❌ Éviter EAGER sauf nécessaire
@OneToMany(fetch = FetchType.EAGER)
private List<Review> reviews;
Pagination Raisonnable¶
Testing¶
Test vos Entités¶
@SpringBootTest
class ProductApiTest {
@Autowired
private TestRestTemplate restTemplate;
@Test
void shouldCreateProduct() {
// Test generated endpoints
}
}
Documentation¶
Documenter avec OpenAPI¶
@AutoApi(
path = "products",
description = "Product management API",
tags = {"Products", "Catalog"}
)