ملعب C# dotnet web API (العديد من الأمثلة + نشر Docker)

سياق
نحتاج في كثير من الأحيان إلى نشر خدمات RESTful الصغيرة، الموثقة جيدًا والمنتشرة في حاويات Docker (Kubernetes، وGoogle Cloud Run، والأنظمة الأساسية بدون خادم، وما إلى ذلك).
يعرض مشروع الملعب هذا العديد من الميزات التي يمكنك إعادة استخدامها في مشاريعك.
إنه مشروع حي ومن المرجح أن يتم تحديثه بشكل متكرر.
ماذا يفعل هذا التطبيق؟
- التطبيق يفعل أشياء كثيرة. يتم كشف العديد من نقاط نهاية Web API عند تشغيل المشروع.
- راجع الوثائق (الصفحة الافتراضية عند تشغيل المشروع)
المكدس والمواضيع الرئيسية في المشروع
تطبيق ويبابي .NET 6.0
- ج #
- REST WebAPI
- الكائنات ومحلل Json
- معالجة رموز الإرجاع (رموز حالة HTTP).
- التخزين المؤقت للذاكرة
- توليد التجزئة والتحقق من صحة التجزئة
- ملحقات/تجاوز أنواع بيانات C# الأصلية
عامل ميناء
- بناء عامل ميناء
- تشغيل عامل الميناء
- تفاعل حاوية عامل الإرساء http/https
نبذة عن المؤلف والترخيص
- إريك هو أحد كبار مطوري الواجهة الخلفية ومهندس معماري.
- يمكنك التواصل مع إريك عبر البريد الإلكتروني [email protected] أو Linkedin https://www.linkedin.com/in/seixaserick/
- مستودعات جيثب الأخرى: https://github.com/seixaserick/
- ترخيص MIT (يرجى مراجعة LICENSE.txt لمزيد من التفاصيل)
كيفية تشغيل هذا المشروع
استنساخ المستودع
إذا قمت بالفعل بتثبيت Git لنظام التشغيل Windows، فقم بتشغيل الأوامر أدناه:
git clone https://github.com/seixaserick/dotnet-webapi-playground
cd dotnet-webapi-playground
كيفية تشغيل هذا المشروع في حاويات Docker
إذا قمت بالفعل بتثبيت Docker Desktop، فما عليك سوى اتباع الخطوات التالية أدناه
إنشاء صورة عامل ميناء
لإنشاء صورة Docker، قم بتشغيل سطر الأوامر أدناه في موجه الأوامر الخاص بدليل المشروع:
docker build -t dotnet-webapi-playground -f Dockerfile .
تشغيل التطبيق في حاوية عامل إرساء

قم بإعداد خادم Redis في Docker إذا لم يكن لديك مثيل 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}'
لتشغيل الصورة في حاوية Docker والتفاعل معها، قم بتشغيل سطر الأوامر أدناه:
docker run -it -p 1977:80 --name=dotnet-webapi-playground --restart=always dotnet-webapi-playground

فتح: http://localhost:1977/square/8 (بدون https)
لإيقاف الحاوية، قم بتشغيل سطر الأوامر أدناه:
docker stop dotnet-webapi-playground
لإزالة الحاوية (حتى لو كانت قيد التشغيل)، قم بتشغيل سطر الأوامر أدناه:
docker rm --force dotnet-webapi-playground
كيفية البناء والتشغيل بدون Docker (Windows)
بعد استنساخ المستودع، يمكنك فتح المشروع باستخدام Visual Studio. قم بإنشائه أو تصحيحه فقط بالضغط على F5
.
لتجميعه وتشغيله في Windows (يتطلب Visual Studio)
افتح ملف الحل dotnet-webapi-playground.sln
باستخدام Visual Studio الخاص بك، ثم اضغط F5
لتشغيل المشروع!
الوجبات الجاهزة
- Swagger هو منشئ توثيق رائع
- يعد C# WebApis خفيفًا جدًا بحيث يمكن تشغيله داخل Docker Containers مع ذاكرة وصول عشوائي أقل من 256 ميجابايت
- تم إنشاء Json Parse بواسطة dotnet بطريقة سهلة وخفيفة الوزن
- تعد Docker أداة رائعة لتشغيل المشاريع بسرعة دون القلق بشأن التبعيات والتكوينات.
- تشبه لغة #C إلى حد كبير اللغات الأخرى المستندة إلى ECMA (Java وJavascript وما إلى ذلك)
- خوارزميات التجزئة هي "طريقة واحدة" فقط. لا يمكنك استرداد سلسلة الإدخال من تجزئة معينة.
- يمكن تخصيص رموز الاستجابة بسهولة في استجابة واجهة برمجة التطبيقات (على سبيل المثال: HTTP 409 Conflict، HTTP 402 PaymentRequired، وما إلى ذلك). اطلع على رموز استجابة HTTP الكاملة.
- يمكن لملفات Good Markdown README.md أن تساعد المطورين الآخرين على فهم المشاريع واستنساخها وتشغيلها واختبارها.
تحدي الواجبات المنزلية
- قم بإنشاء نموذج كائن جديد في مجلد النماذج وقم بإنشاء نقطة نهاية API جديدة (طريقة HTTP GET) لإجراء بعض الحسابات وإرجاع هذا الكائن الجديد.
- قم بإنشاء ملحق نوع بيانات C# جديد واستخدمه لمعالجة أنواع البيانات الأصلية. مثال: قم بإنشاء
string extension
للقيام بـ .ToBase64Encode()
، ثم يمكنك تجربة inputString.ToBase64Encode();
بدلا من نهج الوظيفة. - قم بإنشاء نقطة نهاية POST API جديدة لتلقي بعض الكائنات والقيام بشيء ما بها، وإرجاع النتيجة.
- حاول تنفيذ ذاكرة التخزين المؤقت الموزعة لـ Redis في بعض نقاط النهاية.