Historique depuis l’API Dwitch

On va améliorer notre application en récupérant les données depuis une API REST.

🧠 Notions

  • Sérialisation et désérialisation de données JSON
  • Installation de dépendances
  • Programmation asynchrone avec les SideEffect

Intro

Contrairement au développement web où vous pouvez facilement récupérer des données depuis une API REST, le développement Android est un peu plus complexe.

  • Vous devez gérer les permissions, les erreurs réseau, les erreurs de parsing, et bien d’autres choses.

Il y a notamment une étape supplémentaire pour gérer les données JSON, qui est de les convertir en objets Kotlin.

Implémentation

Reprenez votre code précédent, maintenant on va ajouter la récupération des données depuis une API.

L’écran ressemblera à cela à la fin de cette itération.

Etape 1 - Installer les dépendances

Dans un premier temps il faudra rajouter les dépendances nécessaires pour récupérer des données depuis une API.

✅ Complétez les tâches suivantes

  • Installer Retrofit et OkHttp
  • Installer Moshi & Moshi Converter
  • Installer KSP (Kotlin Symbol Processing) pour les annotations Moshi
  • Pensez à ajouter les permissions dans le manifest Android

Pour cela jetez un oeil aux ressources dans la section “Ressources” pour vous aider.

Etape 2 - Mettre à jour les classes de données

Pour faire fonctionner le pré-processeur KSP de Moshi, il faudra ajouter des annotations aux classes de données.

✅ Complétez les tâches suivantes

  • Ajoutez les @JsonClass pour vos modèles de données
  • Ajoutez des enums où c’est nécessaire pour les champs JSON (Par exemple pour les kind des ingrédients)

🛟 Pensez à @Json(name = "nomDuChampJson") var nomDuChampKotlin: Type pour faire correspondre les noms des champs JSON avec les noms des champs Kotlin, si nécessaire.

Etape 3 - Faire une requête réseau

🔑 N’oubliez pas de me demander le token pour utiliser l’API !

✅ Complétez les tâches suivantes

  • Authentifiez votre requête avec un token Bearer
  • Faites une requête pour récupérer les orders avec les sous-objets ingredients et store
  • Affichez avec Timber ou le debugger les données récupérées
  • Faites en sorte qu’au clique sur le bouton de rafraichissement la requête soit relancée et la liste mise à jour.
  • Votre app ne doit pas planter si le réseau est indisponible

🛟 Aide

  • Pour cette première itération, nous allons utiliser un token d’authentification anonyme (Bearer) pour des raisons de simplicité.
  • Utilisez les SideEffect pour lancer la requête réseau de manière asynchrone lors de la création de la vue.
  • Vous aurez certainement besoin d’un rememberCoroutineScope pour gérer les appels réseau.
  • Pour cette étape, récupérez les données orders depuis Strapi, un objet order peut contenir des ingredients et un store.
  • Utilisez Postman, Insomnia ou autre pour tester les requêtes avant de les implémenter dans votre application.

🏗️ Side Effect

Dans les ressources vous trouverez un exemple d’utilisation des SideEffect pour gérer les appels réseau, lisez bien les ressources en entier.

✒️ Permissions

N’oubliez pas de rajouter les permissions nécessaires dans le fichier AndroidManifest.xml pour accéder à internet.

🚨 Attention

  • Ne stockez jamais de mot de passe en dans votre code, ou tout autre clé d’API. Utilisez toujours des fichiers secrets ou des variables d’environnement.
  • Je vous ai mis une ressource pour cela ici

✅ Critères de Validation

CritèreValidation
Les dépendances sont installées
Les classes de données sont mises à jour
La requête réseau est faite
Les données sont affichées

Une fois ces critères validés, vous pouvez passer à la suite.