Terrain de jeu de l'API Web C# dotnet (nombreux exemples + déploiement Docker)
Contexte
Nous devons souvent publier des microservices RESTful, bien documentés et déployés dans des conteneurs Docker (Kubernetes, Google Cloud Run, plateformes sans serveur, etc.).
Ce projet de terrain de jeu présente de nombreuses fonctionnalités que vous pouvez réutiliser dans vos projets.
Il s'agit d'un projet en direct et sera probablement mis à jour fréquemment.
Que fait cette application ?
- L'application fait beaucoup de choses. De nombreux points de terminaison de l’API Web sont exposés lorsque vous exécutez le projet.
- Voir la documentation (page par défaut lors de l'exécution du projet)
Pile et principaux sujets du projet
À propos de l'auteur et de la licence
- Erick est un développeur et architecte backend senior.
- Vous pouvez joindre Erick par email [email protected] ou Linkedin https://www.linkedin.com/in/seixaserick/
- Autres référentiels Github : https://github.com/seixaserick/
- Licence MIT (veuillez consulter LICENSE.txt pour plus de détails)
Comment exécuter ce projet
Cloner le référentiel
Si vous avez déjà installé Git pour Windows, exécutez les commandes ci-dessous :
git clone https://github.com/seixaserick/dotnet-webapi-playground
cd dotnet-webapi-playground
Comment exécuter ce projet dans des conteneurs Docker
Si vous avez déjà installé Docker Desktop, suivez simplement ces étapes ci-dessous
Création d'une image Docker
Pour créer une image Docker, exécutez la ligne de commande ci-dessous dans l'invite de commande du répertoire du projet :
docker build -t dotnet-webapi-playground -f Dockerfile .
Exécuter l'application dans un conteneur Docker
Configurez un serveur Redis dans Docker si vous n'avez pas d'instance Redis
docker run --name redis -d -p 6379:6379 -e REDIS_PASSWORD=supersecretpassword --restart always redis:latest /bin/sh -c 'redis-server --appendonly yes --requirepass ${REDIS_PASSWORD}'
Pour exécuter l'image dans le conteneur Docker et interagir avec elle, exécutez la ligne de commande ci-dessous :
docker run -it -p 1977:80 --name=dotnet-webapi-playground --restart=always dotnet-webapi-playground
Ouvert : http://localhost:1977/square/8 (sans https)
Pour arrêter le conteneur, exécutez la ligne de commande ci-dessous :
docker stop dotnet-webapi-playground
Pour supprimer le conteneur (même s'il est en cours d'exécution), exécutez la ligne de commande ci-dessous :
docker rm --force dotnet-webapi-playground
Comment créer et exécuter sans Docker (Windows)
Après avoir cloné le référentiel, vous pouvez ouvrir le projet avec Visual Studio. Construisez-le ou déboguez-le simplement en appuyant sur F5
.
Pour le compiler et l'exécuter sous Windows (Visual Studio requis)
Ouvrez le fichier solution dotnet-webapi-playground.sln
avec votre Visual Studio, puis appuyez sur F5
pour exécuter le projet !
Points à retenir
- Swagger est un excellent générateur de documentation
- Les WebApis C# sont très légers à exécuter dans des conteneurs Docker avec moins de 256 Mo de RAM
- Json Parse est réalisé par dotnet de manière simple et légère
- Docker est un outil intéressant pour exécuter des projets rapidement sans se soucier des dépendances et des configurations.
- C# est très similaire aux autres langages basés sur ECMA (Java, Javascript, etc.)
- Les algorithmes de hachage sont « à sens unique ». Vous ne pouvez pas récupérer la chaîne d'entrée à partir d'un hachage donné.
- Les codes de réponse peuvent être facilement personnalisés dans la réponse API (exemple : HTTP 409 Conflict, HTTP 402 PaymentRequired etc.). Consultez les codes de réponse HTTP complets.
- De bons fichiers Markdown README.md peuvent aider d'autres développeurs à comprendre, cloner, exécuter et tester des projets.
Défi des devoirs
- Créez un nouveau modèle d'objet dans le dossier Modèles et créez un nouveau point de terminaison d'API (méthode HTTP GET) pour effectuer des calculs et renvoyer ce nouvel objet.
- Créez une nouvelle extension de type de données C# et utilisez-la pour manipuler vos types de données natifs. Exemple : créez une
string extension
pour faire .ToBase64Encode()
, puis vous pouvez essayer inputString.ToBase64Encode();
au lieu de cela, approche fonctionnelle. - Créez un nouveau point de terminaison de l'API POST pour recevoir un objet et en faire quelque chose, en renvoyant un résultat.
- Essayez d'implémenter le cache distribué Redis dans certains points de terminaison.