Tworzę proste API do platformy zawierającej wpisy z różnych blogów. Zastanawiam się nad strukturą endpointów. Część modelu nad którą się zastanawiam to relacje między encjami: Blog, Post i Komentarz. Gdzie:
- Komentarz nie może istnieć bez Postu
- Post nie może istnieć bez Bloga
Nasuwają mi się dwa rozwiązania, ale nie wiem które wybrać:
Pierwsze
/blogs/{blogId}
/blogs/{blogId}/posts/{postId}
/blogs/{blogId}/posts/{postId}/comments/{commentId}
Drugie:
/blogs/{blogId}
/blogs/{blogId}/posts/{postId}
/posts/{postId}/comments/{commentId}
Moje wątpliwości co do wyboru rozwiązania wynikają z faktu, że czym głębsze zagnieżdżenia, tym więcej pracy związanej z obsługą powiązanych encji np:
W pierwszym rozwiązaniu dodając komentarz musiałbym za każdym razem sprawdzać czy podany w ścieżce blog istnieje. W drugim natomiast wystarczy, że sprawdzę post do którego chcę dodać komentarz (zakładam że post nie może istnieć bez bloga tzn. usuwając bloga usuwam też posty i komentarze - więc spójność zostanie zachowana).