كان التعاون في واجهة برمجة التطبيقات (API) يعني في السابق فتح تطبيق ثقيل، والانتظار حتى تتم مزامنته، والنقر عبر اللوحات لرؤية ما غيره أحد الزملاء. لم تعد بحاجة إلى أي من ذلك. إذا كانت واجهة برمجة التطبيقات الخاصة بك موصوفة بملف OpenAPI، فإن معظم أعمال التعاون هي في الواقع عمل نصي: تحديد إصدار المواصفات (spec)، ومراجعة التغيير (diff)، ودمج التغيير المشترك. كل هذا يتناسب مع بيئة سطر الأوامر (terminal).
يغطي هذا الدليل أدوات واجهة سطر الأوامر (CLI) الخفيفة التي تتعامل مع هذه المهام الثلاث. يتم تثبيت كل أداة هنا في ثوانٍ، وتعمل من أمر واحد، وتندمج في Git أو CI. لا توجد واجهة رسومية، ولا برامج خلفية تعمل باستمرار، ولا إعداد مقاعد للفريق بأكمله لمجرد قراءة سجل التغييرات. للحصول على صورة أوضح لسير عمل الفريق، ابدأ بمجموعتنا من أدوات التعاون في واجهة برمجة التطبيقات؛ هذه المقالة هي المجموعة الفرعية التي تركز على سطر الأوامر.
إليك الإطار العام. ينقسم التعاون من سطر الأوامر إلى تحديد إصدار المواصفات (من يملك أي إصدار)، والمراجعة (ماذا تغير وهل هو آمن)، والتغييرات المشتركة (دمج تعديلات شخص واحد في مصدر الحقيقة للجميع). كل أداة أدناه تقوم بواحدة أو اثنتين من هذه المهام بشكل جيد. مواصفات OpenAPI هي المعيار الرسمي الذي تقرأه وتكتبه هذه الأدوات، لذا فهي اللغة المشتركة التي تجعل الأمر برمته يعمل. ستحصل على سبع أدوات، أمر تثبيت حقيقي ومثال لكل منها، وجدول قصير للاختيار من بينها.
ما الذي يجعل أداة سطر الأوامر "خفيفة الوزن" للتعاون في واجهة برمجة التطبيقات؟
الخفيفة الوزن هي معيار حقيقي، وليست مجرد شعور. تتأهل الأداة عندما تستوفي معظم هذه الشروط:
- تثبيت صغير. ملف ثنائي واحد، استدعاء
npx، أو أمرnpm install -gواحد. لا يوجد مثبت، ولا خدمة تحتاج للبقاء قيد التشغيل. - تشغيل سريع. تعمل وتخرج، لذا يمكنك استدعاؤها في نص برمجي أو في خطاف ما قبل الالتزام (pre-commit hook).
- إعداد منخفض. تعمل مع ملف OpenAPI عادي بإعداد صفر أو الحد الأدنى. وجهها إلى
openapi.yamlوابدأ. - مُصممة للطرفية أولاً. يهدف الإخراج إلى القراءة في الطرفية أو التوجيه إلى CI، وليس العرض في لوحة ويب.
- تؤدي وظيفة واحدة بشكل جيد. مقارنة التغييرات، النشر، أو الدمج؛ ليست منصة كاملة عليك اعتمادها.
تعمل الأدوات تقريبًا من الأصغر والأكثر تركيزًا إلى الأكثر تكاملاً. المدخل الأخير هو الاستثناء: واجهة سطر أوامر لمشروع كامل بدلاً من ملف ثنائي أحادي الغرض، تم تضمينه لأنه يغطي تحديد الإصدار والمراجعة والدمج في مكان واحد.
Git + ملف المواصفات (الأساس)
أخف أداة تعاون هي تلك التي لديك بالفعل. قم بتثبيت ملف OpenAPI الخاص بك في المستودع بجانب الكود، ويتولى Git تحديد الإصدار والسجل والمراجعة مجانًا. يظهر طلب السحب (pull request) مقابل openapi.yaml الأسطر الدقيقة التي تغيرت، ويعلق الزملاء على تلك الأسطر، ويكون الدمج هو التغيير المشترك. هذه هي الفكرة الكاملة وراء التعاون الأصلي في واجهة برمجة التطبيقات عبر Git.
# تعقب المواصفات في المستودع، ثم راجع التغييرات كأي كود آخر
git add openapi.yaml
git commit -m "إضافة معاملات التصفح إلى GET /orders"
git diff main -- openapi.yaml
الأفضل في: السجل والمراجعة دون أدوات جديدة. كل مطور يعرفها بالفعل.
حدها الصادق: فروق Git الأولية على YAML تكون صاخبة. تبدو المفتاح المعاد ترتيبه أو الكتلة المعاد ضبط المسافة البادئة كأنها تغيير حتى عندما تكون واجهة برمجة التطبيقات متطابقة. هذه هي الفجوة بالضبط التي تملأها الأدوات التالية: إنها تقارن معنى واجهة برمجة التطبيقات، وليس نص الملف.
oasdiff
oasdiff هو ملف ثنائي واحد مبني بلغة Go يقوم بمقارنة مواصفتي OpenAPI ويخبرك ما إذا كان التغيير مسببًا للعطل (breaking). إنه مفتوح المصدر (Apache 2.0)، ويكشف مئات من أنواع التغييرات المميزة، ورمز الخروج الخاص به يجعل من السهل جدًا منع الدمج. قم بتشغيله في CI وستفشل التغييرات المسببة للعطل البناء قبل أن تصل إلى زميل.
# التثبيت (macOS)
brew install oasdiff
# يفشل البناء إذا كانت المواصفات الجديدة تكسر العملاء الحاليين
oasdiff breaking main-spec.yaml pr-spec.yaml
# الخروج 0 = آمن، الخروج 1 = تم العثور على تغييرات مسببة للعطل
استخدم oasdiff changelog base.yaml revision.yaml للحصول على ملخص سهل القراءة لكل ما تغير، سواء كان مسببًا للعطل أم لا.
الأفضل في: الكشف عن التغييرات المسببة للعطل كحاجز للدمج. سريع، قابل للبرمجة، لا يتطلب حسابًا.
حدها الصادق: تقوم بالمقارنة والإبلاغ؛ لا تنشر الوثائق أو تدير الفروع. إنها وظيفة واحدة دقيقة، يتم إنجازها بشكل جيد.
Optic
Optic هي أداة سطر أوامر (CLI) مثبتة عبر npm تقوم بمقارنة وتدقيق ومراجعة تغييرات OpenAPI مع مراعاة سير عمل Git. إنها مرخصة بموجب MIT وتفهم $ref و oneOf و allOf وأشكال المخططات الأخرى التي تربك الفروقات الساذجة. حيث يمنحك oasdiff بوابة نجاح/فشل، يميل Optic إلى محادثة المراجعة: يمكنه مقارنة مواصفات عملك بالإصدار الموجود في فرعك الرئيسي وتلخيص التغييرات على مستوى واجهة برمجة التطبيقات لطلب سحب (PR).
# التثبيت
npm install -g @useoptic/optic
# قارن المواصفات الحالية بتلك الموجودة على الفرع الرئيسي
optic diff openapi.yaml --base main --check
الأفضل في: مراجعة التغييرات المهيكلة داخل طلبات السحب، مع قواعد لما يعتبر تغييرًا مسببًا للعطل أو محظورًا.
حدها الصادق: تعتمد على Node، لذا فهي أثقل من ملف Go الثنائي الواحد، والاستفادة القصوى منها تعني تبني تكوينها وقواعد الفحص الخاصة بها.
Bump.sh CLI
تنشر وتفرق Bump.sh CLI وثائق API من الطرفية. يتمحور التعاون هنا حول الوثيقة المشتركة، دائمًا محدثة: تقوم بـ deploy إصدار جديد عند تغيير المواصفات، ويقرأ الزملاء والمستهلكون نفس المرجع المعروض. يعرض الأمر diff سجل تغييرات بين الإصدار المنشور وملفك المحلي، وهو أمر مفيد لإدراجه في تعليق طلب السحب (PR). إنها حزمة Node (bump-cli)، وتتطلب Node 20+، وتعمل preview و diff بدون رمز مميز.
# التثبيت
npm install -g bump-cli
# نشر نسخة جديدة من الوثائق المشتركة
bump deploy openapi.yaml --doc my-api --token $BUMP_TOKEN
# أو مجرد الحصول على سجل التغييرات بين الإصدارات
bump diff openapi.yaml --doc my-api
الأفضل في: الحفاظ على وثيقة واحدة مشتركة، قابلة للقراءة البشرية، متزامنة مع المواصفات، بالإضافة إلى فروقات الطرفية للمراجعة.
حدها الصادق: الوثائق المستضافة وسير عمل النشر هي منتج Bump.sh مدفوع. CLI هو العميل؛ السطح المشترك يعيش على منصتهم.
Redocly CLI
Redocly CLI هي مجموعة أدوات واسعة لـ OpenAPI: تقوم بالتدقيق والتجميع ودفع المواصفات إلى سجل Redocly (الآن Reunite). أمر push هو محرك التعاون؛ فهو يحمل إصدارًا للمواصفات إلى سجل مشترك بحيث يسحب باقي المؤسسة من مصدر أساسي واحد بدلاً من تمرير الملفات. تجميع الحزم مهم أيضًا، حيث تصبح المواصفات متعددة الملفات مع $refs قطعة فنية نظيفة يمكن لزملائك استهلاكها.
# لا حاجة للتثبيت؛ يعمل عبر npx
npx @redocly/cli lint openapi.yaml
npx @redocly/cli bundle openapi.yaml -o dist/openapi.yaml
# ادفع نسخة إلى السجل المشترك (يتطلب مفتاح API)
npx @redocly/cli push openapi.yaml --organization "Acme" --project "orders-api"
الأفضل في: التدقيق وفقًا لنمط داخلي ودفع مواصفات مصدر الحقيقة الوحيد إلى سجل مشترك.
حدها الصادق: lint و bundle مجانيان ومحليان، لكن push والسجل جزء من منصة Redocly المستضافة. لسير عمل أعمق في تحرير المواصفات، راجع دليلنا إلى التحرير التعاوني لمواصفات API.
GitHub CLI (gh)
إذا كانت مراجعتك تتم في طلبات السحب (pull requests)، فإن GitHub CLI يجلب هذا السير العملي بالكامل إلى الطرفية. يمكنك فتح طلب السحب الذي يغير المواصفات، وطلب المراجعين، والتحقق من الحالة دون فتح المتصفح. قم بإقرانه بـ oasdiff أو Optic في خطاف Git، وتصبح مراجعة المواصفات جزءًا طبيعيًا وقابلًا للبرمجة من مراجعة الكود.
# افتح طلب سحب لتغيير المواصفات ووسم المراجعين
gh pr create --title "إضافة تصفح لـ /orders" --body "يضيف معاملات الصفحة والحد"
gh pr review --approve
الأفضل في: إدارة محادثة المراجعة والدمج من سطر الأوامر عندما يكون فريقك يعمل بالفعل في GitHub.
حدها الصادق: تدير طلب السحب (PR)، وليس دلالات واجهة برمجة التطبيقات (API). لا تعرف ما إذا كان التغيير مسببًا للعطل؛ هذا هو ما تقوم بتوصيل oasdiff أو Optic من أجله.
Apidog CLI
Apidog CLI هو الاستثناء هنا. إنه ليس ملفًا ثنائيًا لغرض واحد؛ إنه واجهة سطر أوامر لموارد المشروع الكاملة (npm install -g apidog-cli) تصل إلى نفس بيانات التصميم وتحديد الإصدار والتعاون مثل منصة Apidog، من الطرفية. للتعاون، هناك ثلاث مجموعات أوامر مهمة: branch، و merge-request، و git-connection.
Apidog ليس مفتوح المصدر؛ إنه منتج تجاري مع طبقة مجانية. ولكن إذا كنت تفضل عدم تجميع أداة مقارنة، وناشر وثائق، وسجل يدويًا، فإن الطبقة المجانية بالإضافة إلى CLI تمنحك فروع المواصفات، وسير عمل للمراجعة، ونسخة احتياطية من Git في مكان واحد.
ابدأ بفرع معزول. تختار العلامة --type نموذج الفرع: sprint لميزة أو إصدار محدد، general للعمل الجاري، أو ai لفرع معزول حيث يقوم وكيل بتحرير الموارد دون لمس مصدرك.
# التثبيت والمصادقة
npm install -g apidog-cli
apidog login --with-token $APIDOG_TOKEN
# ابدأ فرع سباق لتغيير مشترك
apidog branch create --type sprint --name "orders-pagination"
عندما يصبح الفرع جاهزًا، افتح طلب دمج بدلاً من الدمج مباشرةً. هذه هي بوابة المراجعة: عندما يكون الفرع الرئيسي محميًا، يقوم محرر بإنشاء الطلب ويوافق مسؤول قبل أن يتم دمج أي شيء. تختار عمليات الدمج الموارد التي تحددها فقط، لذا يظل التغيير المشترك محدد النطاق.
# اقترح التغيير للمراجعة (آمن ضد فرع رئيسي محمي)
apidog merge-request create --branch "orders-pagination" --endpoint-ids 1,2
و git-connection يدعم ملف OpenAPI لكل وحدة في مستودع Git (يدعم GitHub أو GitLab أو Azure DevOps)، بحيث يكون للمواصفات مرآة في التحكم في الإصدار جنبًا إلى جنب مع الكود الخاص بك.
# ربط مواصفات المشروع بمستودع Git للنسخ الاحتياطي والسجل
apidog git-connection --help
الناتج هو JSON منظم مع agentHints.nextSteps، مما يجعل CLI سهل التشغيل من النصوص البرمجية أو وكيل الذكاء الاصطناعي. للمرجع الكامل للأوامر، راجع الدليل الكامل لـ Apidog CLI.
الأفضل في: سير عمل متكامل لتحديد الإصدار + المراجعة + الدمج بدون تجميع أدوات منفصلة، بالإضافة إلى نماذج الفروع المصممة للفرق والوكلاء.
حدها الصادق: إنها واجهة سطر أوامر للمنصة، لذا فهي أثقل عملية تثبيت هنا وتتحدث إلى مشروع Apidog الخاص بك بدلاً من ملف محلي بسيط. كما أنها لا تحتوي على مدقق لغوي لـ OpenAPI؛ استخدم Redocly أو Spectral لقواعد الأنماط. عندما يحتاج فريقك إلى الوصول القائم على الدور بالإضافة إلى الفروع، اقرأ عن التعاون الآمن في واجهة برمجة التطبيقات مع RBAC.
كيف تختار
طابق الأداة مع مهمة التعاون، وليس العكس.
| الأداة | الأفضل لـ | التثبيت | مفتوح المصدر؟ | ملاحظات |
|---|---|---|---|---|
| Git + ملف المواصفات | السجل والمراجعة، لا توجد أدوات جديدة | مثبتة بالفعل | نعم (Git) | صاخب على YAML؛ اقرنه بـ diff دلالي |
| oasdiff | بوابة دمج التغييرات المسببة للعطل | brew install oasdiff |
نعم (Apache 2.0) | رمز الخروج يفشل CI عند وجود أعطال |
| Optic | مراجعة التغييرات المهيكلة في PRs | npm i -g @useoptic/optic |
نعم (MIT) | يفهم $ref، oneOf، إلخ. |
| Bump.sh CLI | نشر الوثائق المشتركة + التباينات | npm i -g bump-cli |
واجهة سطر الأوامر مفتوحة، الاستضافة مدفوعة | Node 20+؛ diff/preview لا تحتاج لرمز |
| Redocly CLI | تدقيق، تجميع، دفع إلى السجل | npx @redocly/cli |
واجهة سطر الأوامر مفتوحة، السجل مدفوع | push يحتاج إلى مفتاح API |
| GitHub CLI | إدارة مراجعة PR من سطر الأوامر | brew install gh |
نعم (MIT) | يدير PR، وليس دلالات API |
| Apidog CLI | تحديد إصدار متكامل + مراجعة + دمج | npm i -g apidog-cli |
لا (طبقة مجانية) | branch / merge-request / git-connection |
تنتهي معظم الفرق بتجميع عدد قليل من الأدوات. مكدس خفيف الوزن شائع: تثبيت المواصفات على Git، تشغيل oasdiff أو Optic كبوابة دمج، والنشر باستخدام Bump.sh أو Redocly. إذا كنت تفضل تشغيل التفرع والمراجعة والدمج من واجهة سطر أوامر واحدة، فإن Apidog يغطي الثلاثة. للحصول على نظرة أوسع حول اختيار مكدس، يقارن دليلنا أدوات تعاون فريق API الخيارات.
خاتمة
التعاون من الطرفية يتكون من ثلاث خطوات: تحديد إصدار المواصفات، مراجعة الفروقات، دمج التغيير المشترك. يتعامل Git مع الأولى، وتزيد oasdiff و Optic من دقة الثانية، وتنشر Bump.sh و Redocly النتيجة، ويدير gh طلب السحب. يدمج Apidog CLI تحديد الإصدار والمراجعة والدمج في مجموعة أوامر واحدة مع نماذج فروع مصممة لكل من الفرق والوكلاء.
هل تريد المسار المتكامل دون تجميع الأدوات؟ قم بتنزيل Apidog، وقم بتثبيت apidog-cli، وقم بتشغيل أول apidog branch create و merge-request من الطرفية التي تعمل فيها بالفعل. توصيل CLI بـ CI هو خطوة تالية قصيرة من هناك.
