Travail pratique

Application Serveur REST: Partie 1

Ce travail pratique vise à implémenter un serveur HTTP qui répond à une une interface prédéfinie par une spécification externe. En d'autres mots, votre client a déjà déterminé l'interface de communication entre son logiciel et le votre.

Les objectifs de ce travail pratique sont:

Avant de commencer le travail pratique, il est recommander de se familiariser avec les concepts suivants:

Contexte

Votre client, la firme publicitaire Beau Décor Média veut utiliser une fonctionnalité avancée d'un lecteur multimédia propriétaire de Panneaux Digitaux Inc, qu'elle utilise.

Le lecteur multimédia est en charge de jouer des publicités de formats vidéos et images 24 heures sur 24, 7 jours sur 7, puis de comptabilisé les statistiques de lecture des contenus. Cette partie est critique à l'entreprise Beau Décor Média, car ces données permettent de prouver à ses clients que Beau Décor Média respecte ses engagements contractuelles et diffuse bel et bien les publicités que ses clients paient ex. Kola-Koka, Apple, etc.

Preuve de diffusion (PDD)

Le lecteur multimédia rapporte les preuves de diffusions, abbrégé PDD à un serveur central à la compagnie qui fabrique le lecteur. À tous les 24 heures, un rapport est généré, en comptabilisant les données envoyées par le serveur. Ce délai est malheureusement trop long pour Beau Décor Média, qui veut générer un rapport sur demande, avec les données rapportées à minute.

Heureusement, une fonctionnalité du lecteur multimédia existe pour répondre à ce besoin: les preuves de diffusion externes (PDD Externe). Cette fonctionnalité consiste à alimenté le lecteur d'une URL où le lecteur envoie la preuve de diffusion immédiatement après la diffusion du contenu. Cela permet à Beau Décor Média de comptabiliser en temps réel les PDD pour générer les rapports sur demande.

Quelles information jugez-vous importantes dans le contexte ci-haut ? Quels éléments comprenez-vous et quels éléments ne comprenez-vous pas ? Comprenez-vous la fonctionnalité ? Êtes-vous capable de comprendre la relation entre Beau Décor Média et Panneaux Digitaux Inc ?

Posez-vous ce genre de questions et prenez-en notes, cela pourrait servir pour la suite !

Partie 1: Réception des PDD

Votre travail dans cette partie est de créer un application serveur qui écoute sur un port HTTP pour y recevoir une preuve de diffusion. Le lecteur multimédia de Panneaux Digitaux Inc accepte d'envoyer un PDD à chaque diffusion complétée à une URL personalisée. Toutefois, le format de données que le lecteur envoie est pré-déterminé, tel que ci-bas:

Spécifications

{
    "id_ecran" : 4456,
    "id_cadre": 4457,
    "nb_ecrans" : 1,
    "id_contenu" : 5001,
    "id_campagne" :  5002,
    "id_horaire" :  5003,
    "impressions" : 2, 
    "interactions" : 0,
    "temps_fin" : "2016-05-31T10:14:50.000",
    "duree_ms" : 5000,
    "ext1" : "reservé",
    "ext2" : "reservé",
    "extra_data" : "data custom"
}

Figure 1 – Définition d'un PDD au format JSON

Exigences

  1. Votre application doit accepter un PDD définit par le format ci-haut sur une url possédant la terminaison /pdd
  2. Votre application ne doit seulement accepter la requête lorsqu'elle est de méthode POST
  3. Les requêtes qui ne n'aboutissent pas à /pdd doivent retourner une erreur 404
  4. Les requêtes aboutissants à /pdd mais qui ne respectent pas le format définit plus haut doivent retourner l'erreur HTTP 400

Avant de vous lancer dans la programmation, n'oubliez-pas de dessiner un bref diagramme des composants principaux de votre application ! Quelques questions utiles:

  • Quelle sont les données à traiter ?
  • Quelles sont les opérations que je dois accomplir ?
  • Comment bien communiquer le résultat à l'utilisateur ?
Partie 2 ➡