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