العربية

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

تطور توثيق واجهات برمجة التطبيقات: دليل شامل لمواصفات OpenAPI

في عالم اليوم الرقمي شديد الترابط، تعد واجهات برمجة التطبيقات (APIs) الخيوط غير المرئية التي تنسج برامجنا وخدماتنا معًا. إنها محرك الاقتصاد الرقمي الحديث، حيث تمكّن كل شيء من الخدمات المصرفية عبر الهاتف المحمول إلى خلاصات وسائل التواصل الاجتماعي. ولكن مع تزايد عدد واجهات برمجة التطبيقات، يبرز تحدٍ حاسم: كيف يمكن للمطورين والأنظمة والمؤسسات التواصل بفعالية وبدون غموض؟ كيف نضمن أن واجهة برمجة تطبيقات تم بناؤها في جزء من العالم يمكن استهلاكها بسلاسة بواسطة خدمة في جزء آخر؟

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

ما هي مواصفات OpenAPI؟ لغة عالمية لواجهات برمجة التطبيقات

في جوهرها، مواصفات OpenAPI هي وصف واجهة قياسي ومستقل عن اللغة لواجهات برمجة التطبيقات RESTful. تسمح لك بتحديد هيكل واجهة برمجة التطبيقات بالكامل في ملف واحد، يُكتب عادةً إما بـ YAML أو JSON. فكر في الأمر كمخطط تفصيلي لمبنى؛ قبل أن يبدأ أي بناء، يوضح المخطط كل غرفة وكل مدخل وكل مأخذ كهربائي. وبالمثل، يصف مستند OpenAPI:

تاريخ موجز: من Swagger إلى OpenAPI

ربما تكون قد سمعت مصطلح "Swagger" يستخدم بالتبادل مع OpenAPI. من المهم فهم العلاقة بينهما. بدأت المواصفات باسم مواصفات Swagger في عام 2010، والتي أنشأها توني تام في Reverb. ومع اكتسابها شعبية هائلة، تم التبرع بها لمؤسسة Linux في عام 2015 وأعيد تسميتها إلى مواصفات OpenAPI، مما أرسى بها كمعيار مفتوح حقيقي تحت إشراف مبادرة OpenAPI، وهي اتحاد يضم قادة الصناعة بما في ذلك Google و Microsoft و IBM.

اليوم، يشير Swagger إلى مجموعة من الأدوات القوية مفتوحة المصدر والاحترافية التي تعمل مع مواصفات OpenAPI، مثل Swagger UI لإنشاء وثائق تفاعلية و Swagger Editor لكتابة المواصفات نفسها.

المكونات الأساسية لمستند OpenAPI

يتم تنظيم مستند OpenAPI بمجموعة من الحقول المحددة. على الرغم من أنه قد يبدو مخيفًا في البداية، إلا أنه منظم منطقيًا. دعنا نحلل اللبنات الأساسية لمستند OpenAPI 3.x باستخدام YAML لقابليته الفائقة للقراءة البشرية.

1. كائنات openapi و info: الأساسيات

يبدأ كل مستند OpenAPI بإصدار وبيانات وصفية أساسية.

مثال:


openapi: 3.0.3
info:
  title: Global Book Catalog API
  description: An API for accessing a catalog of books from around the world.
  version: 1.0.0
  contact:
    name: API Support Team
    url: http://www.example.com/support
    email: support@example.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html

2. مصفوفة servers: أين تجد واجهة برمجة التطبيقات الخاصة بك

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

مثال:


servers:
  - url: https://api.example.com/v1
    description: Production Server
  - url: https://staging-api.example.com/v1
    description: Staging Server

3. كائن paths: قلب واجهة برمجة التطبيقات

هنا حيث تحدد نقاط النهاية الخاصة بواجهة برمجة التطبيقات. يحتفظ كائن paths بجميع مسارات URL الفردية. ثم يصف كل عنصر مسار عمليات HTTP (get، post، put، delete، إلخ) التي يمكن إجراؤها على هذا المسار.

ضمن كل عملية، تحدد تفاصيل مثل:

4. كائن components: اللبنات القابلة لإعادة الاستخدام

لتجنب تكرار نفسك (باتباع مبدأ DRY)، توفر OpenAPI كائن components. هذه ميزة قوية حيث يمكنك تحديد عناصر قابلة لإعادة الاستخدام والإشارة إليها في جميع أنحاء مواصفاتك باستخدام مؤشرات $ref.

5. كائن security: تطبيق المصادقة

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

لماذا يجب على مؤسستك تبني OpenAPI: الفوائد التجارية والتقنية

إن تبني مواصفات OpenAPI ليس مجرد خيار تقني؛ بل هو قرار استراتيجي يدفع الكفاءة والتعاون والجودة عبر دورة حياة تطوير البرمجيات بأكملها.

للمطورين: المصدر الوحيد للحقيقة

لمديري المنتجات والمهندسين المعماريين: التصميم والحوكمة

لفرق الاختبار وضمان الجودة: التحقق المبسط

للمستخدمين النهائيين والشركاء: تجربة مطور فائقة (DX)

دليل عملي: إنشاء أول مستند OpenAPI لك

لنضع النظرية موضع التنفيذ من خلال إنشاء مواصفات OpenAPI 3.0 أساسية لـ "API كتالوج الكتب العالمي" الخاص بنا. سنستخدم YAML لقابليته للقراءة.

الخطوة 1: تحديد المعلومات الأساسية والخوادم

نبدأ بالبيانات الوصفية وعنوان URL لخادم الإنتاج.


openapi: 3.0.3
info:
  title: Global Book Catalog API
  description: An API for accessing a catalog of books from around the world.
  version: 1.0.0
servers:
  - url: https://api.globalbooks.com/v1

الخطوة 2: تحديد نموذج بيانات قابل لإعادة الاستخدام في components

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


components:
  schemas:
    Book:
      type: object
      properties:
        isbn:
          type: string
          description: The International Standard Book Number.
          example: '978-0321765723'
        title:
          type: string
          description: The title of the book.
          example: 'The C++ Programming Language'
        author:
          type: string
          description: The author of the book.
          example: 'Bjarne Stroustrup'
        publicationYear:
          type: integer
          description: The year the book was published.
          example: 2013
      required:
        - isbn
        - title
        - author

الخطوة 3: تحديد نقاط النهاية في paths

الآن، سننشئ نقطتي نهاية: واحدة للحصول على قائمة بالكتب والأخرى للحصول على كتاب معين بواسطة رقم ISBN الخاص به.

لاحظ استخدام $ref: '#/components/schemas/Book'. هذه هي الطريقة التي نشير بها إلى مخطط Book القابل لإعادة الاستخدام.


paths:
  /books:
    get:
      summary: List all available books
      description: Returns a list of books, optionally filtered.
      operationId: listBooks
      responses:
        '200':
          description: A successful response with an array of books.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Book'

  /books/{isbn}:
    get:
      summary: Get a book by its ISBN
      description: Returns a single book identified by its ISBN.
      operationId: getBookByIsbn
      parameters:
        - name: isbn
          in: path
          required: true
          description: The ISBN of the book to retrieve.
          schema:
            type: string
      responses:
        '200':
          description: The requested book.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Book'
        '404':
          description: The book with the specified ISBN was not found.

الخطوة 4: إضافة الأمان

لنحمِ واجهة برمجة التطبيقات الخاصة بنا بمفتاح API بسيط يجب إرساله في الترويسة. أولاً، نحدد المخطط في components، ثم نطبقه عالميًا.


# Add this to the 'components' section
components:
  # ... schemas from before
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

# Add this at the root level of the document
security:
  - ApiKeyAuth: []

الخطوة 5: التحقق والتصور

مع ملف YAML الكامل الخاص بك، يمكنك الآن استخدام أدوات مختلفة:

النظام البيئي لـ OpenAPI: الأدوات والتقنيات

تتضاعف قوة OAS من خلال نظامها البيئي الواسع والناضج من الأدوات. مهما كانت حاجتك، فمن المحتمل أن تكون هناك أداة لها:

مستقبل OpenAPI: الإصدار 3.1 وما بعده

تتطور مواصفات OpenAPI باستمرار. قدم الإصدار الرئيسي الأخير، OAS 3.1، العديد من التحسينات المهمة:

تعزز هذه التطورات مكانة OpenAPI كأداة مركزية في بنية حديثة قائمة على واجهة برمجة التطبيقات أولاً (API-first) وموجهة بالأحداث.

الخلاصة: حجر الزاوية في التطوير الحديث

لقد غيرت مواصفات OpenAPI طريقة تفكيرنا في واجهات برمجة التطبيقات. لقد رفعت توثيق API من فكرة لاحقة مخيفة ومهملة في كثير من الأحيان إلى وثيقة استراتيجية حية تقود دورة حياة التطوير بأكملها. من خلال العمل كعقد قابل للقراءة آليًا، تعزز OAS التعاون، وتمكن من الأتمتة القوية، وتفرض الاتساق، وتؤدي في النهاية إلى إنشاء واجهات برمجة تطبيقات أفضل وأكثر موثوقية وأسهل في الاستهلاك.

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