Exemple de données et de filtrage - Création d'un exemple d'API en C#
Lorsque l'on travaille aujourd'hui dans le domaine du développement web, un outil important est un échantillon d'API web, que l'on peut utiliser pour tester des applications web frontales, des appareils mobiles ou même des applications logicielles. Dans sa vidéo détaillée sur "Données échantillons et filtrage - Création d'une API échantillon en C#", Tim Corey nous guide dans la création d'une API Web C# qui charge des données échantillons à partir d'un fichier JSON, configure le filtrage et est prête à être déployée sous forme de conteneur Docker ou d'application Web traditionnelle.
Dans cet article, nous allons explorer l'approche de Tim étape par étape, et expliquer les concepts fondamentaux de l'API Web ASP.NET Core, des API minimales et des services HTTP.
Introduction à l'exemple d'API Web
Tim commence par expliquer pourquoi la création d'un nouveau projet d'API Web est si importante pour les développeurs. Que vous construisiez pour des appareils mobiles, une application web ou d'autres applications logicielles, le fait de disposer d'un échantillon d'API léger rend les tests plus rapides et plus fluides.
Tim précise qu'à la fin du projet, nous aurons.. :
-
Une API minimale utilisant ASP.NET Core et .NET Core,
-
Une API documentée avec prise en charge de l'OpenAPI (Swagger UI),
-
Vérifications de l'état de santé,
-
Simulation d'erreurs et de ralentissements,
- Déploiement dans un conteneur Docker et sur un serveur VPS.
Ce petit projet permettra aux développeurs d'interagir facilement avec les services HTTP, par le biais de méthodes HTTP telles que GET, PUT, POST et DELETE.
Mise en place du projet et de l'échantillon de données
Tim commence par structurer le projet d'API Web dans Visual Studio, le célèbre environnement de développement intégré de Microsoft.
À 1:07, Tim crée un nouveau dossier Data et ajoute un fichier courseData.json. Il mentionne que son site, timcorey.com, utilise un système similaire - juste un gros fichier JSON dans les coulisses, agissant comme un service web.
Points clés de la configuration de Tim :
-
Utilisez des fichiers JSON pour les données d'exemple afin d'éviter d'avoir recours à une base de données ou à Entity Framework.
-
Limitez les conteneurs en évitant les services supplémentaires tels que les serveurs SQL.
- Les données ne sont pas mutables - il n'est pas nécessaire de stocker les changements ; il suffit de réinitialiser les données lorsque cela est nécessaire.
Ce choix reflète les principes REST (Representational State Transfer) de travail avec des ressources existantes.
Comprendre la structure des données du cours
Tim explique soigneusement la structure de l'exemple de fichier JSON :
-
ID (nombre entier),
-
Pré-commande (booléen),
-
URL du cours (chaîne),
-
Type de cours (chaîne),
-
Nom, nombre de leçons, durée du cours en heures (chiffres),
-
Description, URL de l'image,
-
Prix en USD,
- Lien de prévisualisation.
Tim explique à 3:29 que tous les prix sont basés sur des dollars américains ; toutefois, les taxes locales (TVA) peuvent modifier le prix final.
Chacun de ces champs correspond ensuite à une classe de modèle en C# - un élément fondamental dans la construction d'API Web ASP.NET.
Création de la classe de modèle de cours
Passant au codage .NET Core, Tim crée un fichier CourseModel.cs à l'intérieur d'un nouveau dossier Models.
À 4:47, il utilise la fonction "Paste Special > Paste JSON as Classes" de Visual Studio pour créer instantanément une classe basée sur la structure JSON. Tim souligne :
-
Nommage correct en PascalCase (important pour les API web en C#),
-
Chaînes de caractères obligatoires ou nullables (6:02),
- Éviter de stocker null là où une chaîne vide suffirait.
La création d'une classe de modèle solide est essentielle pour permettre la communication de données entre les clients et le serveur.
Charge de données en mémoire
Tim poursuit en créant une classe CourseData.cs pour gérer le chargement de la liste des cours en mémoire.
Étapes clés :
-
Utilisez System.Text.Json pour la désérialisation,
-
Définissez PropertyNameCaseInsensitive = true (8:04) pour faire correspondre les champs JSON en camelCase aux champs C# en PascalCase,
-
Utilisez Path.Combine (9:04) pour un accès multiplateforme aux fichiers,
- Veiller à la sensibilité à la casse lorsqu'il s'agit de serveurs Linux (9:59).
Les cours sont chargés dans une propriété publique List
Tim à 11:04 souligne que si la désérialisation échoue, une nouvelle liste vide est créée pour éviter les erreurs de référence nulle - une bonne pratique lors de la construction d'API robustes.
Enregistrer les données du cours dans l'injection de dépendance
Ensuite, Tim montre comment enregistrer la classe CourseData à l'aide de AddTransient dans le conteneur de services.
Il explique que même si les données sont en lecture seule, l'utilisation d'un service transitoire permet d'éviter les problèmes de modification accidentelle. Cette approche s'aligne sur les normes modernes de développement de l'API Web ASP .NET Core.
Créer des points d'arrivée de cours
À 14:03, Tim commence à construire des points d'extrémité pour l'API d'exemple :
-
Une méthode GET à /courses pour récupérer tous les cours,
- Une méthode d'extension AddCourseEndpoints pour un code plus propre.
Cette approche modulaire simplifie la mise à l'échelle de votre projet d'API Web - une technique essentielle lorsqu'il s'agit de gérer de grands services HTTP ou de multiples points d'extrémité.

Tim définit également l'URL de lancement sur Swagger UI, ce qui facilite les tests.
Dépannage : Inadéquation des types de données
Lorsqu'il teste le nouveau point d'accès, Tim rencontre une erreur de code d'état liée au champ CourseLengthInHours. Il se rend compte que certains cours ont des heures fractionnaires (comme 2,5), ce qui nécessite un double au lieu d'un int.
Tim corrige le modèle de cours, démontrant ainsi l'importance d'une vérification minutieuse des erreurs et du respect des types de données lors de la consommation de ressources web externes.
Améliorer l'API avec ID Lookup
Tim étend la fonctionnalité :
-
LoadAllCourses pour récupérer tous les cours,
- LoadCourseById pour trouver un cours par son numéro d'identification.
Il améliore la gestion des erreurs en vérifiant si un cours existe. Si ce n'est pas le cas, Tim utilise la fonction return NotFound(), qui renvoie un code d'état HTTP approprié au client.
Cela correspond aux pratiques du style architectural RESTful, où chaque méthode HTTP communique clairement le résultat de l'opération.
Ajouter le filtrage par type de cours et la recherche
Une simple méthode GET n'est pas suffisante - les services web réels ont besoin de capacités de filtrage.
Tim améliore LoadAllCourses pour qu'il accepte les paramètres de requête :
-
courseType (chaîne),
- recherche (chaîne).
Il explique comment gérer en toute sécurité les paramètres facultatifs à l'aide de String.IsNullOrWhiteSpace.
Le filtrage par type de cours utilise RemoveAll avec String.Compare, en ignorant les différences de casse. La recherche du nom du cours et de la description courte utilise .Contains avec une comparaison insensible à la casse.
Tim teste des scénarios tels que :
-
Filtrage pour "Master Course"
-
Recherche de "web" ou "SQL"
- Combiner la recherche et le type de cours pour obtenir des résultats plus précis
Cela permet d'offrir aux utilisateurs une expérience interactive complète à travers des applications web, des applications mobiles ou des clients communiquant via HTTP. Pour de plus amples informations, veuillez consulter la vidéo complète vidéo.
Réflexions finales et prochaines étapes
À la fin de la leçon, Tim a créé :
-
Une API Web ASP.NET Core opérationnelle,
-
Capacités de filtrage et de recherche,
-
Gestion correcte des erreurs (NotFound, Ok, etc.),
- Prise en charge de la documentation Swagger UI et OpenAPI.
Tim annonce qu'il s'occupera ensuite du partage des ressources entre origines (CORS), qui est essentiel pour permettre aux clients Internet et aux différents domaines d'accéder librement à l'API.
Tim conclut par un encouragement : la programmation comporte parfois des obstacles, mais elle est gratifiante.
Conclusion
En suivant la vidéo de Tim Corey, vous pouvez créer un nouveau projet d'API Web dans Visual Studio, charger des échantillons de données, construire des points d'extrémité et mettre en œuvre un filtrage puissant, le tout basé sur les principes RESTful et les normes ASP.NET Core.
Que vous testiez des pages web, construisiez des API pour des appareils mobiles ou travailliez avec des ressources existantes, cette configuration garantit un accès rapide et fiable aux données via les méthodes HTTP.
Continuez à mettre en pratique ces modèles dans .NET Core, et bientôt vous créerez des services web robustes qui communiquent sans problème entre les clients, les serveurs et l'internet !



