كيفية استخدام grpc-curl لاختبار وتصحيح واجهات برمجة التطبيقات الخاصة بك

تعلم كيفية استخدام grpc-curl، أداة سطر الأوامر التي تتيح لك التفاعل مع خوادم gRPC بطريقة بسيطة وبديهية، وكيفية استخدامها مع apidog، الأداة المستندة إلى الويب لوثائق واجهة برمجة التطبيقات واختبارها.

Amir Hassan

Amir Hassan

13 أغسطس 2025

كيفية استخدام grpc-curl لاختبار وتصحيح واجهات برمجة التطبيقات الخاصة بك

Apidog للمؤسسات

النشر على الخوادم المحلية

SSO و RBAC

متوافق مع SOC 2

استكشف Apidog للمؤسسات

إذا كنت مطورًا يعمل مع واجهات برمجة التطبيقات (APIs)، فمن المحتمل أنك تعرف مدى أهمية اختبارها وتصحيح الأخطاء فيها قبل نشرها في الإنتاج. تريد التأكد من أن واجهات برمجة التطبيقات الخاصة بك موثوقة وآمنة وفعالة، وأنها تلبي توقعات عملائك ومستخدميك.

لكن كيف يمكنك اختبار وتصحيح أخطاء واجهات برمجة التطبيقات الخاصة بك، خاصة إذا كانت تستخدم gRPC، وهو بروتوكول حديث وفعال للتواصل بين الخدمات الصغيرة؟ هنا يأتي دور grpc-curl. grpc-curl هو أداة سطر الأوامر التي تتيح لك التفاعل مع خوادم gRPC بسهولة وبشكل بديهي.

في هذه التدوينة، سأوضح لك كيف تستخدم grpc-curl لاختبار وتصحيح أخطاء واجهات برمجة التطبيقات الخاصة بك، ولماذا يجب أن تفكر في استخدامه لمشاريع gRPC الخاصة بك.

💡
إذا كنت ترغب في رفع مستوى اختبار وتصحيح أخطاء gRPC الخاص بك، فقد ترغب في استخدام grpc-curl مع Apidog، وهي أداة قوية ومرنة لوثائق واختبارات API. Apidog هي أداة تتيح لك إنشاء وإدارة ومشاركة وثائق واختبارات واجهات برمجة التطبيقات باستخدام واجهة بسيطة وبديهية. يمكنك استخدام Apidog لتوثيق واختبار أي نوع من واجهات برمجة التطبيقات، بما في ذلك REST، SOAP، GraphQL، وgRPC مجانًا.
button

ما هو grpc-curl؟

grpc-curl هو أداة سطر الأوامر التي تتيح لك استدعاء طرق RPC على خادم gRPC من سطر الأوامر. يدعم طرق RPC المتنوعة، بما في ذلك الأحادية، البث من الخادم، البث من العميل، والبث ثنائي الاتجاه. يمكنك أيضًا استعراض المخطط لخدمات gRPC، إما عن طريق استعلام خادم يدعم الانعكاس من الخادم أو عن طريق تحميل ملفات بروتوسيت المترجمة.

grpc-curl مكتوب بلغة .NET، وله بعض المزايا على gRPCurl، مثل:

grpc-curl متاحة كحزمة NuGet، ويمكنك تثبيتها باستخدام الأمر التالي:

dotnet tool install -g grpc-curl

كيفية استخدام grpc-curl؟

لاستخدام grpc-curl، تحتاج إلى تشغيل خادم gRPC، وتحتاج إلى معرفة عنوان URL الخاص به وأسماء الخدمة والطريقة التي تريد استدعاؤها. تحتاج أيضًا إلى الحصول على المخطط لخدمات gRPC، إما باستخدام الانعكاس من الخادم أو عن طريق تحميل ملفات بروتوسيت.

في هذا المثال، سأستخدم خادم gRPC بسيط ينفذ خدمة آلة حاسبة، مع أربع طرق: الجمع، الطرح، الضرب، والقسمة. الخادم مكتوب بلغة C#، ويدعم الانعكاس من الخادم.

لإطلاق الخادم، قم بتشغيل الأمر التالي من مجلد المشروع:

dotnet run

سوف يستمع الخادم على المنفذ 5000 بشكل افتراضي. يمكنك تغيير رقم المنفذ في ملف appsettings.json.

لإجراء استدعاء لطريقة الجمع على الخادم، قم بتشغيل الأمر التالي من محطة أخرى:

grpc-curl http://localhost:5000 Calculator/Add -d '{"x": 3, "y": 5}'

يجب أن تبدو المخرجات كما يلي:

{
  "result": 8
}

كما ترى، يقوم grpc-curl تلقائيًا باستنتاج أسماء الخدمة والطريقة من عنوان URL، وينسق مخرجات JSON بالألوان والمسافات. يمكنك أيضًا استخدام الخيار -o لتحديد تنسيق إخراج مختلف، مثل xml أو النص.

لإجراء استدعاء لطريقة الطرح، قم بتشغيل الأمر التالي:

grpc-curl http://localhost:5000 Calculator/Subtract -d '{"x": 10, "y": 4}'

يجب أن تبدو المخرجات كما يلي:

{
  "result": 6
}

لإجراء استدعاء لطريقة الضرب، قم بتشغيل الأمر التالي:

grpc-curl http://localhost:5000 Calculator/Multiply -d '{"x": 2, "y": 7}'

يجب أن تبدو المخرجات كما يلي:

{
  "result": 14
}

لإجراء استدعاء لطريقة القسمة، قم بتشغيل الأمر التالي:

grpc-curl http://localhost:5000 Calculator/Divide -d '{"x": 15, "y": 3}'

يجب أن تبدو المخرجات كما يلي:

{
  "result": 5
}

إذا حاولت القسمة على الصفر، ستحصل على رسالة خطأ، مثل هذه:

grpc-curl http://localhost:5000 Calculator/Divide -d '{"x": 15, "y": 0}'
{
  "error": "لا يمكن القسمة على الصفر."
}

يدعم grpc-curl أيضًا طرق البث، التي يمكن أن ترسل أو تستقبل العديد من الرسائل في استدعاء واحد. على سبيل المثال، لنفترض أن لدينا طريقة بث من الخادم تُدعى Fibonacci، والتي تأخذ عدد n كدخل وتعيد أول n من أرقام فيبوناتشي كتيار من الرسائل. يبدو كود الخادم لهذه الطريقة كالتالي:

public override async Task Fibonacci(Number request, IServerStreamWriter<Number> responseStream, ServerCallContext context)
{
    int n = request.Value;
    int a = 0;
    int b = 1;
    for (int i = 0; i < n; i++)
    {
        await responseStream.WriteAsync(new Number { Value = a });
        int temp = a;
        a = b;
        b = temp + b;
    }
}

لإجراء استدعاء لهذه الطريقة باستخدام grpc-curl، قم بتشغيل الأمر التالي:

grpc-curl http://localhost:5000 Calculator/Fibonacci -d '{"value": 10}'

يجب أن تبدو المخرجات كما يلي:

{
  "value": 0
}
{
  "value": 1
}
{
  "value": 1
}
{
  "value": 2
}
{
  "value": 3
}
{
  "value": 5
}
{
  "value": 8
}
{
  "value": 13
}
{
  "value": 21
}
{
  "value": 34
}

كما ترى، يقوم grpc-curl بطباعة كل رسالة كما يتلقاها من الخادم، ويغلق الاتصال عندما تكتمل التدفق.

يدعم grpc-curl أيضًا طرق البث من العميل، التي يمكن أن ترسل العديد من الرسائل إلى الخادم وتستقبل ردًا واحدًا. على سبيل المثال، لنفترض أن لدينا طريقة بث من العميل تُدعى Sum، والتي تأخذ تيارًا من الأرقام كدخل وتعيد مجموعها كاستجابة. يبدو كود الخادم لهذه الطريقة كالتالي:

public override async Task<Number> Sum(IAsyncStreamReader<Number> requestStream, ServerCallContext context)
{
    int sum = 0;
    await foreach (var number in requestStream.ReadAllAsync())
    {
        sum += number.Value;
    }
    return new Number { Value = sum };
}

لإجراء استدعاء لهذه الطريقة باستخدام grpc-curl، نحتاج إلى تقديم الرسائل المدخلة من ملف أو من المدخلات القياسية. على سبيل المثال، يمكننا إنشاء ملف يسمى numbers.json بمحتوى التالي:

{"value": 1}
{"value": 2}
{"value": 3}
{"value": 4}
{"value": 5}

بعد ذلك، يمكننا تشغيل الأمر التالي:

grpc-curl http://localhost:5000 Calculator/Sum -d @numbers.json

يجب أن تبدو المخرجات كما يلي:

{
  "value": 15
}

بدلاً من ذلك، يمكننا استخدام الرمز - للإشارة إلى أن الرسائل المدخلة تأتي من المدخلات القياسية، ثم كتابة أو لصق الرسائل في المحطة، متبوعة بـ Ctrl+D لإنهاء الإدخال. على سبيل المثال:

grpc-curl http://localhost:5000 Calculator/Sum -d -
{"value": 1}
{"value": 2}
{"value": 3}
{"value": 4}
{"value": 5}
^D

يجب أن تكون المخرجات مماثلة لما سبق.

يدعم grpc-curl أيضًا طرق البث ثنائي الاتجاه، التي يمكن أن ترسل وتستقبل العديد من الرسائل في كلا الاتجاهين. على سبيل المثال، لنفترض أن لدينا طريقة بث ثنائي الاتجاه تُدعى Chat، التي تأخذ تيارًا من الرسائل كدخل وتعيد تيارًا من الرسائل كإخراج. يبدو كود الخادم لهذه الطريقة كالتالي:

public override async Task Chat(IAsyncStreamReader<Message> requestStream, IServerStreamWriter<Message> responseStream, ServerCallContext context)
{
    await foreach (var message in requestStream.ReadAllAsync())
    {
        Console.WriteLine($"تم الاستلام: {message.Text}");
        var reply = new Message { Text = $"صدى: {message.Text}" };
        await responseStream.WriteAsync(reply);
        Console.WriteLine($"تم الإرسال: {reply.Text}");
    }
}

لإجراء استدعاء لهذه الطريقة باستخدام grpc-curl، نحتاج إلى تقديم الرسائل المدخلة من ملف أو من المدخلات القياسية، ونحتاج إلى استخدام خيار -s للإشارة إلى أننا نريد تلقي الرسائل الإخراجية كتيار. على سبيل المثال، يمكننا إنشاء ملف يسمى chat.json بمحتوى التالي:

{"text": "مرحبًا"}
{"text": "كيف حالك؟"}
{"text": "وداعًا"}

بعد ذلك، يمكننا تشغيل الأمر التالي:

grpc-curl http://localhost:5000 Calculator/Chat -d @chat.json -s

يجب أن تبدو المخرجات كما يلي:

{
  "text": "صدى: مرحبًا"
}
{
  "text": "صدى: كيف حالك؟"
}
{
  "text": "صدى: وداعًا"
}

كما ترى، يقوم grpc-curl بإرسال كل رسالة إلى الخادم، ويطبع كل رد من الخادم، حتى تنتهي تدفق الإدخال.

لماذا تستخدم grpc-curl؟

grpc-curl هي أداة مفيدة لاختبار وتصحيح واجهات gRPC الخاصة بك، لأنها تتيح لك:

grpc-curl أيضًا سهل التثبيت والاستخدام، ويعمل على منصات متعددة، مثل Windows، Linux، و Mac OS. إنه متوافق مع كل من .NET Core و .NET Framework، ويدعم كل من بروتوكولات HTTP/1.1 و HTTP/2.

grpc-curl ليس فقط مفيدًا للمطورين، ولكن أيضًا للاختباريين، ومهندسي ضمان الجودة، ومهندسي DevOps، وأي شخص يحتاج إلى التفاعل مع خوادم gRPC. يمكن أن تساعدك في التحقق من وظائف وأداء وأمان وموثوقية واجهات برمجة التطبيقات الخاصة بك، وتحديد وإصلاح أي مشاكل أو أخطاء.

كيفية استخدام grpc-curl مع apidog؟

إذا كنت ترغب في رفع مستوى اختبار وتصحيح أخطاء gRPC الخاص بك، فقد ترغب في استخدام grpc-curl مع apidog، وهي أداة قوية ومرنة لوثائق واختبارات API.

Apidog هي أداة تتيح لك إنشاء وإدارة ومشاركة وثائق واختبارات واجهات برمجة التطبيقات، باستخدام واجهة بسيطة وبديهية. يمكنك استخدام apidog لتوثيق واختبار أي نوع من واجهات برمجة التطبيقات، بما في ذلك REST، SOAP، GraphQL، و gRPC.

button

مع apidog، يمكنك:

البث من الخادم

كما يشير الاسم، ينطوي البث من الخادم على إرسال بيانات استجابة متعددة في طلب واحد. على سبيل المثال، قد ينطوي على الاشتراك في جميع بيانات أسعار المعاملات للأسهم ضمن إطار زمني مدته دقيقة واحدة.

البث من خادم Apidog

البث من العميل

في هذا الوضع، يمكن أن يرسل العميل باستمرار العديد من رسائل الطلب إلى الخادم دون الانتظار للحصول على ردود فورية. بعد معالجة جميع الطلبات، يرسل الخادم رسالة رد واحدة إلى العميل. هذه الطريقة مناسبة لنقل كميات كبيرة من البيانات بكفاءة بطريقة متدفقة، مما يساعد على تقليل الكمون وتحسين تبادل البيانات.

البث من عميل Apidog

البث ثنائي الاتجاه

يمكن أن يمكّن البث ثنائي الاتجاه العملاء والخوادم من إنشاء اتصال ثنائي الاتجاه دائم ونقل العديد من الرسائل في نفس الوقت. يُستخدم عادةً في الألعاب عبر الإنترنت وبرامج مكالمات الفيديو في الوقت الحقيقي، وهو مناسب لتواصل في الوقت الحقيقي وسيناريوهات نقل بيانات كبيرة. بعد بدء المكالمة، يحافظ العميل والخادم على جلسة بينهما ويتلقيان ردودًا في الوقت الحقيقي بعد إرسال محتويات طلب مختلفة.

البث ثنائي الاتجاه لـ Apidog

التعاون في واجهات gRPC

يمكن أن يولد Apidog مستندات واجهة gRPC قابلة للقراءة من ملفات .proto، مما يسهل التعاون على الواجهات. انقر على زر القائمة على الجانب الأيمن من الواجهة للحصول على رابط التعاون ومشاركته مع أعضاء الفريق الآخرين لتوحيد نهج تصحيح الواجهة.

التعاون في واجهات gRPC

لتعلم المزيد حول Apidog، وكيفية استخدامه مع grpc-curl، يمكنك زيارة موقع Apidog، أو مراجعة وثائق Apidog.

الخاتمة

grpc-curl هي أداة سطر أوامر تتيح لك التفاعل مع خوادم gRPC بطريقة بسيطة وبديهية. تعتمد على gRPCurl، لكنها تضيف بعض الميزات والتحسينات التي تجعلها أكثر سهولة في الاستخدام وقوة. يمكنك استخدام grpc-curl لاختبار وتصحيح واجهات gRPC الخاصة بك، ولإنشاء مقتطفات رمزية لشيفرة العميل الخاصة بك.

كما أن grpc-curl متوافقة مع apidog، أداة تستند إلى الويب لوثائق واختبارات واجهة برمجة التطبيقات. يمكنك استخدام apidog لإنشاء وإدارة ومشاركة مشاريع واجهة برمجة التطبيقات الخاصة بك، ولتشغيل ومراقبة اختبارات واجهة برمجة التطبيقات الخاصة بك.

إذا كنت مطورًا يعمل مع gRPC، أو إذا كنت مهتمًا بمعرفة المزيد عن gRPC، يجب عليك بالتأكيد تجربة grpc-curl و Apidog. يمكن أن تساعدك في تحسين جودة وقابلية استخدام واجهات برمجة التطبيقات الخاصة بك، وجعل عملية التطوير أكثر سهولة وسرعة.

button

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات