عميل HTTP لـ C# (.NET): أفضل المكتبات للعمل مع طلبات الويب
في التطوير الحديث على منصة .NET، يعد التفاعل مع خدمات الويب وAPI من المهام الرئيسية. اختيار عميل HTTP المناسب يمكن أن يبسط الكود بشكل كبير، ويزيد من قابلية قراءته وأدائه. في هذه المقالة، سنستعرض أربع مكتبات أفضل للعمل مع HTTP في C#: من HttpClient المدمج إلى الحلول المتخصصة RestSharp وFlurl وRefit. ستكون المادة مفيدة لكل من المبتدئين والمطورين ذوي الخبرة الذين يرغبون في تحسين مشاريعهم.
1. HttpClient — المعيار المدمج في .NET
HttpClient هو الفئة الرئيسية من مساحة الأسماء System.Net.Http، والمتاحة في جميع إصدارات .NET بدءًا من 4.5. لا يتطلب تثبيت حزم إضافية ويوفر تحكمًا كاملاً في عملية إرسال الطلبات.
الميزات الرئيسية:
- دعم العمليات غير المتزامنة (async/await).
- العمل الأصلي مع التدفقات (Stream) لتحميل الملفات الكبيرة.
- إعداد مرن للرؤوس، والمهلات، والبروكسي.
- التكامل مع
IHttpClientFactoryلإدارة دورة الحياة (موصى به في ASP.NET Core).
مثال على الاستخدام الأساسي:
using System;using System.Net.Http;using System.Threading.Tasks;
class Program{ static async Task Main(string[] args) { using var client = new HttpClient(); client.BaseAddress = new Uri("https://api.github.com"); client.DefaultRequestHeaders.Add("User-Agent", "C# App");
HttpResponseMessage response = await client.GetAsync("/repos/dotnet/core"); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } }}متى تستخدم: للطلبات البسيطة، عندما لا تكون هناك حاجة لمعالجة معقدة للأخطاء أو التسلسل. مناسب تمامًا للخدمات المصغرة والمهام الخلفية.
2. RestSharp — البساطة والراحة
RestSharp (يتم تثبيته عبر NuGet: Install-Package RestSharp) هي واحدة من أشهر المكتبات الخارجية لـ .NET. تقوم بتجريد العمل مع HTTP، وتوفير واجهة fluent وتسلسل/إلغاء تسلسل تلقائي لـ JSON و XML.
المزايا:
- تحويل تلقائي للاستجابات إلى كائنات C#.
- دعم مدمج للمصادقة (Basic، OAuth، JWT).
- عمل مريح مع معلمات الطلب (query، header، body).
- دعم تحميل الملفات (multipart/form-data).
مثال مع RestSharp:
using RestSharp;using System;
class GithubClient{ public async Task<string> GetRepoInfo(string owner, string repo) { var client = new RestClient("https://api.github.com"); var request = new RestRequest($"/repos/{owner}/{repo}", Method.Get); request.AddHeader("User-Agent", "RestSharpDemo");
var response = await client.ExecuteAsync(request); if (response.IsSuccessful) { return response.Content; } else { throw new Exception($"خطأ: {response.StatusCode}"); } }}متى تستخدم: للتطوير السريع لعملاء REST API، عندما تكون بساطة الكود والحد الأدنى من الإعداد اليدوي مهمة.
3. Flurl — أسلوب fluent وسلاسل الاستدعاءات
Flurl (NuGet: Install-Package Flurl.Http) هي مكتبة تجعل طلبات HTTP تبدو كسلاسل من الدوال. تتناسب بشكل مثالي مع LINQ والعمليات غير المتزامنة.
الميزات:
- صيغة قابلة للقراءة:
url.AppendPathSegment(...).SetQueryParams(...).GetJsonAsync()أيضاً في المكتبة
توصيات