Files
stripstream/docs/api-get-cleanup.md
Julien Froidefond 26021ea907
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 6m16s
refactor: replace book details GET route with server action
2026-02-28 12:21:07 +01:00

4.1 KiB

status, reviewed_at, review_file
status reviewed_at review_file
reviewed 2026-02-28 thoughts/reviews/api-get-cleanup-review.md

Plan - Cleanup des routes API GET (focus RSC)

État réel (scan src/app/api)

Routes GET actuellement présentes :

A. Migrees en Lot 1 (RSC, routes supprimees)

Route Utilisation client actuelle Cible Action
GET /api/preferences src/contexts/PreferencesContext.tsx Préférences fournies par layout/page server Supprimée
GET /api/komga/favorites src/components/layout/Sidebar.tsx, src/components/series/SeriesHeader.tsx Favoris passés depuis parent Server Component Supprimée
GET /api/admin/users src/components/admin/AdminContent.tsx Page admin en RSC + props Supprimée
GET /api/admin/stats src/components/admin/AdminContent.tsx Page admin en RSC + props Supprimée
GET /api/komga/libraries src/components/settings/BackgroundSettings.tsx Données passées depuis page/settings server Supprimée

B. A garder temporairement (interaction client forte)

Route Utilisation actuelle Pourquoi garder maintenant Piste de simplification

B2. Migrees en Lot 2 (pagination server-first)

Route Utilisation client actuelle Cible Action
GET /api/komga/libraries/[libraryId]/series src/app/libraries/[libraryId]/LibraryClientWrapper.tsx Chargement via searchParams dans page server Supprimée
GET /api/komga/series/[seriesId]/books src/app/series/[seriesId]/SeriesClientWrapper.tsx Chargement via searchParams dans page server Supprimée
GET /api/komga/random-book src/components/layout/ClientLayout.tsx Action utilisateur via server action Supprimée
GET /api/komga/home src/app/page.tsx consomme déjà HomeService côté server Données agrégées directement via service server Supprimée
GET /api/user/profile aucun consommateur client trouvé, page compte déjà server-first Profil/statistiques via UserService en Server Component Supprimée
GET /api/komga/series/[seriesId] plus de consommateur fetch('/api/...') (chargement via SeriesService) Détail série chargé en Server Component Supprimée
GET /api/komga/books/[bookId] fallback client (ClientBookPage) et DownloadManager migrés vers server action Données livre/pages/nextBook via BookService et action server Supprimée

C. A conserver (API de transport / framework)

Route Raison
GET /api/komga/images/** streaming/binaire image, adapté à une route API
GET /api/komga/books/[bookId]/pages/[pageNumber] endpoint image avec déduplication/cache
GET /api/auth/[...nextauth] handler NextAuth, à conserver

Points importants

  • GET /api/komga/config n'existe plus dans src/app/api (déjà retirée).
  • Le gain principal vient des écrans qui refetchent des données déjà disponibles côté server (layout/page).
  • Objectif: réduire les GET API utilisés comme couche interne entre composants React et services serveur.

Plan d'exécution recommandé

  1. Lot 1 (quick wins)

    • Migrer preferences, favorites, admin/users, admin/stats, komga/libraries vers un chargement server-first.
    • Garder les routes GET le temps de la transition, puis supprimer les appels client.
  2. Lot 2 (pages paginées)

    • Repenser libraries/[libraryId]/series et series/[seriesId]/books pour un flux searchParams server-first.
    • Conserver seulement les interactions client réellement nécessaires.
  3. Lot 3 (stabilisation)

    • Vérifier user/profile et komga/home (route API vs appel direct service).
    • Supprimer les routes GET devenues sans consommateurs.

Check de validation

  • Plus de fetch("/api/...") GET dans les composants server-capables.
  • Pas de régression UX sur pagination/filtres et random book.
  • Journal clair des routes supprimées et des routes conservées avec justification.