Une architecture en couches sépare le code en responsabilités : routes ou contrôleurs (HTTP), services (règles métier), accès aux données. Chaque couche ne dépend que de celle du dessous, ce qui facilite les tests et le changement d'une couche. Les objets HTTP ne doivent pas descendre dans la couche métier.