Files
stripstream/docs/api-get-cleanup.md

4.2 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
GET /api/komga/libraries/[libraryId]/series src/app/libraries/[libraryId]/LibraryClientWrapper.tsx (pagination/filtre/recherche) Navigation dynamique pilotée par query params côté client Évaluer migration partielle vers navigation server (searchParams)
GET /api/komga/series/[seriesId]/books src/app/series/[seriesId]/SeriesClientWrapper.tsx (pagination/filtre) Même contrainte de pagination dynamique Même stratégie: server-first puis interactions ciblées
GET /api/komga/random-book src/components/layout/ClientLayout.tsx Action utilisateur ponctuelle (random) Option: server action dédiée plutôt qu'API GET
GET /api/komga/books/[bookId] fallback dans ClientBookPage.tsx, usage DownloadManager.tsx fallback utile hors flux page SSR Limiter au fallback strict, éviter le double-fetch
GET /api/komga/series/[seriesId] utilisé via Sidebar pour enrichir les favoris enrichissement client en cascade Charger les métadonnées nécessaires en amont côté server
GET /api/user/profile pas d'appel client direct trouvé route utile pour consommation API interne/outils Vérifier si remplaçable par service server direct
GET /api/komga/home endpoint de données agrégées peut rester tant que la page consomme un service centralisé privilégier appel server direct depuis page/home

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.