Semaine 4
Cette semaine nous allons ajouter une fonctionnalité pour que nos utilisateurs puissent ajouter des vrais films à leurs favoris.
Pour cela nous allons utiliser une API externe pour récupérer des informations sur des films.
Ces films seront stockés dans la table Films
.
Requête HTTP
Je vous invite a lire la partie sur les requêtes HTTP dans le cours Ici Ainsi que la partie sur le JSON Ici
Le JSON c'est bien mais à quoi ca va nous servir ? Le JSON est devenu le format le plus commun pour que deux applications qui ne se connaisse pas puissent s'échanger facilement des données.
Dès que notre service va renvoyer une réponse, elle sera en JSON.
Notre service va lui même aller faire des appels a un autre service disponible a tous sur internet.
Requeter des films et serie
Pour que notre utilisateur puisse ajouter des films à ses favoris, il nous faut une liste de film. La création d'une telle liste étant une tâche longue et peu intéressante, nous utiliserons une API externe.
Le site https://www.omdbapi.com fourni une API pour chercher des films par nom.
Obtenir une clé d'API
Pour faire des requête le site vous demandera une clé d'API pour vous authentifier, vous pouvez en obtenir une gratuitement via ce lien : https://www.omdbapi.com/apikey.aspx Cochez FREE, mettez votre mail puis Submit. Une fois le mail reçu, cliquez sur le lien d'activation et attendez 10 minutes que cela soit effectif.
Voici un lien d'exemple avec ma clé d'API pour rechercher ce qui est objectivement la meilleur trilogie existante https://www.omdbapi.com/?s=lord of the rings&page=1&type=movie&apikey=414e8ea4
Intégration de l'API dans un service
Vous allez intégrer cet API dans votre projet.
Pour cela vous allez créer une classe OmdbService
dans le dossier Services
qui aura une méthode SearchByTitle
qui prendra en paramètre un string title
et renverra une liste de film.
Vous créer ensuite une autre méthode GetByImdbId
qui prendra en paramètre un string imdbId
et renverra un film.
Vous utiliserez la classe HttpClient
pour faire des requêtes HTTP.
Allez voir le cours sur l'injection de dépendance pour savoir comment l'injecter Ici
Aller également voir le cours sur les requêtes HTTP pour savoir comment les utiliser Ici
Et enfin le cours sur le JSON pour savoir comment traiter les réponses Ici
N'oubliez pas de gérer les erreurs et de renvoyer un code d'erreur si la requête n'a pas pu être effectuée. Documentation
Nouvelles classes
Les réponses OMDB sont en JSON, vous devrez donc créer des classes pour désérialiser ces réponses.
Il faudra créer 4 classes:
OmdbSearchResponse
OmdbFilm
OmdbFilmDetail
OmdbFilmRating
OmdbSearchResponse
contiendra une liste de OmdbFilm
et OmdbFilm
contiendra les informations d'un film.
OmdbFilmDetail
contiendra les informations détaillées d'un film et les ratings au format OmdbFilmRating
.
Controlleur OMDB
Vous allez créer un controlleur Omdb
.
Celui-ci devra utiliser le service OmdbService
pour faire des recherches de films.
Ce controlleur fournira les routes suivantes:
GET /api/Omdb/search/{title} // Renvoi les films correspondant au titre
GET /api/Omdb/import/{imdbId} // Recherche un film par son id IMDB, l'ajoute à la BDD puis le retourne
Injection de dépendance
Pour utiliser OmdbService
dans votre controlleur vous devrez l'injecter via l'injection de dépendance.
Pour cela vous pourrez utiliser la méthode AddSingleton
cf cours Ici
Bonus
Ajouter les champs Plot
et Released
dans la table Film
et remplissez les lors de l'import.
Ajoutez un champ Rating
dans la table Film
pour stocker la note "Rotten Tomatoes" du film qui est renvoyer dans la recherche par imdbId. Puis stocker cette valeur lors de l'import.