C#-Dotnet-Web-API-Spielplatz (viele Beispiele + Docker-Bereitstellung)
Kontext
Oft müssen wir RESTful-Microservices veröffentlichen, gut dokumentiert und in Docker-Containern bereitgestellt (Kubernetes, Google Cloud Run, serverlose Plattformen usw.).
Dieses Spielplatzprojekt zeigt viele Funktionen, die Sie in Ihren Projekten wiederverwenden können.
Es handelt sich um ein Live-Projekt und wird wahrscheinlich häufig aktualisiert.
Was macht diese Anwendung?
- Die App macht viele Dinge. Viele Web-API-Endpunkte werden verfügbar gemacht, wenn Sie das Projekt ausführen.
- Siehe Dokumentation (Standardseite, wenn das Projekt ausgeführt wird)
Stack und Hauptthemen im Projekt
Über den Autor und die Lizenz
- Erick ist Senior Backend-Entwickler und Architekt.
- Sie erreichen Erick per E-Mail [email protected] oder Linkedin https://www.linkedin.com/in/seixaserick/
- Andere Github-Repositories: https://github.com/seixaserick/
- MIT-Lizenz (weitere Informationen finden Sie in LICENSE.txt)
So führen Sie dieses Projekt aus
Klonen Sie das Repository
Wenn Sie Git für Windows bereits installiert haben, führen Sie die folgenden Befehle aus:
git clone https://github.com/seixaserick/dotnet-webapi-playground
cd dotnet-webapi-playground
So führen Sie dieses Projekt in Docker-Containern aus
Wenn Sie Docker Desktop bereits installiert haben, führen Sie einfach die folgenden Schritte aus
Erstellen eines Docker-Images
Um ein Docker-Image zu erstellen, führen Sie die folgende Befehlszeile in der Eingabeaufforderung des Projektverzeichnisses aus:
docker build -t dotnet-webapi-playground -f Dockerfile .
Ausführen der App in einem Docker-Container
Richten Sie einen Redis-Server in Docker ein, wenn Sie keine Redis-Instanz haben
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}'
Um das Image im Docker-Container auszuführen und mit ihm zu interagieren, führen Sie die folgende Befehlszeile aus:
docker run -it -p 1977:80 --name=dotnet-webapi-playground --restart=always dotnet-webapi-playground
Öffnen: http://localhost:1977/square/8 (ohne https)
Um den Container zu stoppen, führen Sie die folgende Befehlszeile aus:
docker stop dotnet-webapi-playground
Um den Container zu entfernen (auch wenn er ausgeführt wird), führen Sie die folgende Befehlszeile aus:
docker rm --force dotnet-webapi-playground
Erstellen und Ausführen ohne Docker (Windows)
Nachdem Sie das Repository geklont haben, können Sie das Projekt mit Visual Studio öffnen. Erstellen Sie es oder debuggen Sie es einfach, indem Sie F5
drücken.
Zum Kompilieren und Ausführen unter Windows (Visual Studio erforderlich)
Öffnen Sie die Lösungsdatei dotnet-webapi-playground.sln
mit Ihrem Visual Studio und drücken Sie dann F5
, um das Projekt auszuführen!
Imbissbuden
- Swagger ist ein großartiger Dokumentationsgenerator
- C#-WebApis lassen sich sehr leicht in Docker-Containern mit weniger als 256 MB RAM ausführen
- Json Parse wird von dotnet auf einfache und leichte Weise erstellt
- Docker ist ein nettes Tool, um Projekte schnell auszuführen, ohne sich Gedanken über Abhängigkeiten und Konfigurationen machen zu müssen.
- C# ist anderen ECMA-basierten Sprachen (Java, Javascript usw.) sehr ähnlich.
- Hashing-Algorithmen funktionieren nur in eine Richtung. Sie können die Eingabezeichenfolge nicht aus einem bestimmten Hash wiederherstellen.
- Antwortcodes können in der API-Antwort einfach angepasst werden (Beispiel: HTTP 409 Conflict, HTTP 402 PaymentRequired usw.). Sehen Sie sich die vollständigen HTTP-Antwortcodes an.
- Gute Markdown-README.md-Dateien können anderen Entwicklern helfen, Projekte zu verstehen, zu klonen, auszuführen und zu testen.
Hausaufgaben-Herausforderung
- Erstellen Sie ein neues Objektmodell im Ordner „Modelle“ und einen neuen API-Endpunkt (HTTP-GET-Methode), um einige Berechnungen durchzuführen und dieses neue Objekt zurückzugeben.
- Erstellen Sie eine neue C#-Datentyperweiterung und verwenden Sie sie zum Bearbeiten Ihrer nativen Datentypen. Beispiel: Erstellen Sie eine
string extension
um .ToBase64Encode()
auszuführen. Anschließend können Sie inputString.ToBase64Encode();
Stattdessen Funktionsansatz. - Erstellen Sie einen neuen POST-API-Endpunkt, um ein Objekt zu empfangen, etwas damit zu tun und ein Ergebnis zurückzugeben.
- Versuchen Sie, den verteilten Redis-Cache an einem Endpunkt zu implementieren.