Le détail d'une vidéo¶
Objectif : lire une vidéo précise par son UUID et la renvoyer en JSON.
Ce que vous allez apprendre : cibler une vidéo avec
VideoRepository.get_by_uuid, et distinguer trois cas : trouvée (200),
inconnue (404), table absente (503). C'est la lecture unitaire, après la
liste.
Dernier palier du niveau débutant de la progression vidéo, après Lister les vidéos.
Ce que ce starter montre¶
- une route paramétrée
/video-detail/{uuid}; - la lecture d'une vidéo via
get_by_uuid; - une réponse
404claire si l'UUID est inconnu ; - la même réponse
503pédagogique si la table n'existe pas encore.
Lecture seule, aucun ffmpeg.
Classes Forge utilisées¶
| Classe / fonction | Rôle dans ce starter | Référence |
|---|---|---|
request.route_param |
Lire l'uuid dans l'URL. |
Request |
VideoRepository.get_by_uuid |
Lire une vidéo précise (ou None). |
Parcours vidéo |
Tester¶
Ouvrez https://localhost:8000/video-detail/<uuid> avec l'UUID d'une vidéo
enregistrée : la réponse JSON donne ses métadonnées. Un UUID inconnu renvoie
404 ; sans table, 503.
Le contrôleur¶
# mvc/controllers/video_detail_controller.py
from forge_mvc_video.storage.repository import VideoRepository
class VideoDetailController(BaseController):
@staticmethod
def index(request: Request) -> Response:
uuid = request.route_param("uuid")
try:
video = VideoRepository().get_by_uuid(uuid)
except Exception:
return Response.json(_STORAGE_NOT_READY, status=503)
if video is None:
return Response.json({"error": "video_not_found", "uuid": uuid}, status=404)
return Response.json({"video": video})
Comprendre ce code¶
uuidvient de l'URL (route_param) : on cible la vidéo sans query string.get_by_uuid(uuid)renvoie un dictionnaire ouNone: on traduitNoneen404, jamais une page d'erreur brute.- L'absence de table reste un
503pédagogique, comme au palier précédent.
À retenir¶
get_by_uuid(uuid)lit une vidéo précise.- Distinguer trouvée / inconnue / indisponible =
200/404/503. - Une route paramétrée cible une ressource via
route_param.
Après ce starter¶
Vous avez terminé le niveau débutant : configuration, liste, détail. Faites le point dans le bilan du niveau.