Skip to content

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

@AutoApi(
    path = "admin/users",
    security = @Security(
        enabled = true,
        roles = {"ADMIN"}
    )
)

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

springflow:
  pagination:
    default-page-size: 20    # Pas trop petit
    max-page-size: 100       # Pas trop grand

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"}
)

Voir Aussi