C# dotnet web API play (banyak contoh + penerapan Docker)
Konteks
Seringkali kita perlu memublikasikan layanan mikro RESTful, yang didokumentasikan dengan baik dan diterapkan di container Docker (Kubernetes, Google Cloud Run, platform Tanpa Server, dll.).
Proyek taman bermain ini menunjukkan banyak fitur yang dapat Anda gunakan kembali dalam proyek Anda.
Ini adalah proyek langsung dan kemungkinan akan sering diperbarui.
Apa yang dilakukan aplikasi ini?
- Aplikasi ini melakukan banyak hal. Banyak titik akhir api Web yang terekspos saat Anda menjalankan proyek.
- Lihat dokumentasi (halaman default saat proyek berjalan)
Tumpukan dan topik utama dalam proyek ini
Aplikasi webapi .NET 6.0
- C#
- SISANYA WebAPI
- Objek dan parser Json
- Manipulasi Kode Pengembalian (HTTP StatusCodes).
- Penyimpanan Memori
- Pembuatan hashing dan validasi hash
- Ekstensi/penggantian tipe data C# asli
Buruh pelabuhan
- membangun buruh pelabuhan
- menjalankan buruh pelabuhan
- interaksi http/https wadah buruh pelabuhan
Tentang Penulis dan lisensi
- Erick adalah Pengembang dan Arsitek Backend Senior.
- Anda dapat menghubungi Erick melalui email [email protected] atau Linkedin https://www.linkedin.com/in/seixaserick/
- Repositori Github Lainnya: https://github.com/seixaserick/
- Lisensi MIT (silakan periksa LICENSE.txt untuk lebih jelasnya)
Bagaimana menjalankan proyek ini
Kloning repositori
Jika Anda sudah menginstal Git untuk Windows, jalankan perintah di bawah ini:
git clone https://github.com/seixaserick/dotnet-webapi-playground
cd dotnet-webapi-playground
Cara menjalankan proyek ini di container Docker
Jika Anda sudah menginstal Docker Desktop, cukup ikuti langkah-langkah di bawah ini
Membuat gambar buruh pelabuhan
Untuk membuat image Docker, jalankan baris perintah di bawah ini pada prompt perintah direktori proyek:
docker build -t dotnet-webapi-playground -f Dockerfile .
Menjalankan aplikasi dalam wadah buruh pelabuhan
Siapkan server Redis di Docker jika Anda belum memiliki 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}'
Untuk menjalankan image di container Docker dan berinteraksi dengannya, jalankan baris perintah di bawah ini:
docker run -it -p 1977:80 --name=dotnet-webapi-playground --restart=always dotnet-webapi-playground
Buka: http://localhost:1977/square/8 (tanpa https)
Untuk menghentikan container, jalankan baris perintah di bawah ini:
docker stop dotnet-webapi-playground
Untuk menghapus container (walaupun sedang berjalan), jalankan baris perintah di bawah ini:
docker rm --force dotnet-webapi-playground
Cara membangun dan menjalankan tanpa Docker (Windows)
Setelah mengkloning repositori Anda dapat membuka proyek dengan Visual Studio. Bangun atau debug saja dengan menekan F5
.
Untuk mengkompilasi dan menjalankannya di Windows (diperlukan Visual Studio)
Buka file solusi dotnet-webapi-playground.sln
dengan Visual Studio Anda, lalu tekan F5
untuk menjalankan proyek!
Kesimpulan
- Swagger adalah generator dokumentasi yang hebat
- C# WebApis sangat ringan untuk dijalankan di dalam Docker Containers dengan RAM kurang dari 256MB
- Json Parse dibuat oleh dotnet dengan cara yang mudah dan ringan
- Docker adalah alat yang bagus untuk menjalankan proyek dengan cepat tanpa mengkhawatirkan ketergantungan dan konfigurasi.
- C# sangat mirip dengan bahasa berbasis ECMA lainnya (Java, Javascript, dll.)
- Algoritme hashing hanya bersifat "satu arah". Anda tidak dapat memulihkan string masukan dari hash yang diberikan.
- Kode respons dapat dengan mudah disesuaikan dalam respons API (contoh: Konflik HTTP 409, Pembayaran HTTP 402 Diperlukan, dll.). Lihat kode respons HTTP lengkap.
- File README.md Markdown yang bagus dapat membantu pengembang lain untuk memahami, mengkloning, menjalankan, dan menguji proyek.
Tantangan pekerjaan rumah
- Buat Model Objek baru di folder Models dan buat titik akhir api baru (metode HTTP GET) untuk melakukan beberapa perhitungan dan mengembalikan objek baru ini.
- Buat ekstensi tipe data C# baru dan gunakan untuk memanipulasi tipe data asli Anda. Contoh: Buat
string extension
untuk melakukan .ToBase64Encode()
, lalu Anda dapat mencoba inputString.ToBase64Encode();
sebagai gantinya Pendekatan fungsi. - Buat titik akhir POST API baru untuk menerima beberapa objek dan melakukan sesuatu dengannya, mengembalikan hasilnya.
- Coba terapkan cache terdistribusi Redis di beberapa titik akhir.