فارسی

قدرت مشخصات OpenAPI (OAS) را کشف کنید. این راهنما همه چیز را از مفاهیم اصلی و مزایا گرفته تا مثال‌های عملی و آینده طراحی API-محور پوشش می‌دهد.

تکامل مستندات API: راهنمای جامع مشخصات OpenAPI

در دنیای دیجیتال فوق متصل امروزی، رابط‌های برنامه‌نویسی کاربردی (API) نخ‌های نامرئی هستند که نرم‌افزارها و خدمات ما را به هم متصل می‌کنند. آنها موتور اقتصاد دیجیتال مدرن هستند و همه چیز را از بانکداری موبایل گرفته تا فیدهای شبکه‌های اجتماعی امکان‌پذیر می‌سازند. اما با انفجار تعداد APIها، یک چالش اساسی پدید می‌آید: چگونه توسعه‌دهندگان، سیستم‌ها و سازمان‌ها می‌توانند به طور مؤثر و بدون ابهام با یکدیگر ارتباط برقرار کنند؟ چگونه اطمینان حاصل کنیم که یک API ساخته شده در یک گوشه از جهان، می‌تواند به طور یکپارچه توسط سرویسی در گوشه‌ای دیگر مصرف شود؟

پاسخ در یک زبان مشترک، یک قرارداد جهانی نهفته است که قابلیت‌های یک API را به گونه‌ای توصیف می‌کند که هم انسان‌ها و هم ماشین‌ها بتوانند آن را درک کنند. این نقش مشخصات OpenAPI (OAS) است. OAS فراتر از مستندات صرف، یک استاندارد بنیادی برای طراحی، ساخت، مستندسازی و مصرف APIهای RESTful است. این راهنما شما را به سفری عمیق در مشخصات OpenAPI می‌برد و بررسی می‌کند که این مشخصات چیست، چرا اهمیت دارد و چگونه می‌توانید از آن برای ساخت محصولات دیجیتال بهتر و مشارکتی‌تر استفاده کنید.

مشخصات OpenAPI چیست؟ زبانی جهانی برای APIها

در هسته خود، مشخصات OpenAPI یک استاندارد و توصیف رابط مستقل از زبان برای APIهای RESTful است. این مشخصات به شما اجازه می‌دهد تا کل ساختار API خود را در یک فایل واحد، که معمولاً به زبان YAML یا JSON نوشته می‌شود، تعریف کنید. آن را مانند یک نقشه دقیق برای یک ساختمان در نظر بگیرید؛ قبل از شروع هرگونه ساخت و ساز، نقشه هر اتاق، هر در و هر پریز برق را مشخص می‌کند. به طور مشابه، یک سند OpenAPI موارد زیر را توصیف می‌کند:

تاریخچه‌ای مختصر: از Swagger تا OpenAPI

شما ممکن است اصطلاح «Swagger» را به جای OpenAPI شنیده باشید. درک رابطه آن‌ها مهم است. این مشخصات در سال ۲۰۱۰ به عنوان مشخصات Swagger توسط تونی تام در شرکت Reverb آغاز شد. با کسب محبوبیت گسترده، در سال ۲۰۱۵ به بنیاد لینوکس اهدا شد و به مشخصات OpenAPI تغییر نام داد و به عنوان یک استاندارد واقعاً باز تحت نظارت OpenAPI Initiative، کنسرسیومی از رهبران صنعت از جمله گوگل، مایکروسافت و IBM، تثبیت شد.

امروزه، Swagger به مجموعه‌ای از ابزارهای قدرتمند متن‌باز و حرفه‌ای اشاره دارد که با مشخصات OpenAPI کار می‌کنند، مانند Swagger UI برای تولید مستندات تعاملی و Swagger Editor برای نوشتن خود مشخصات.

اجزای اصلی یک سند OpenAPI

یک سند OpenAPI با مجموعه‌ای از فیلدهای خاص ساختار یافته است. اگرچه در ابتدا ممکن است ترسناک به نظر برسد، اما به طور منطقی سازماندهی شده است. بیایید بلوک‌های سازنده کلیدی یک سند OpenAPI 3.x را با استفاده از YAML به دلیل خوانایی برتر آن برای انسان، بررسی کنیم.

۱. اشیاء `openapi` و `info`: اطلاعات پایه

هر سند OpenAPI با یک نسخه و فراداده‌های ضروری شروع می‌شود.

مثال:


openapi: 3.0.3
info:
  title: API کاتالوگ جهانی کتاب
  description: یک API برای دسترسی به کاتالوگ کتاب‌ها از سراسر جهان.
  version: 1.0.0
  contact:
    name: تیم پشتیبانی API
    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

۲. آرایه `servers`: محل پیدا کردن API شما

آرایه servers URLهای پایه برای API شما را مشخص می‌کند. شما می‌توانید چندین سرور برای محیط‌های مختلف مانند توسعه، آزمایشی (staging) و تولید تعریف کنید. این به ابزارها اجازه می‌دهد به راحتی بین محیط‌ها جابجا شوند.

مثال:


servers:
  - url: https://api.example.com/v1
    description: سرور تولید
  - url: https://staging-api.example.com/v1
    description: سرور آزمایشی

۳. شیء `paths`: قلب API

اینجا جایی است که شما نقاط پایانی API خود را تعریف می‌کنید. شیء paths تمام مسیرهای URL منحصر به فرد را در خود جای می‌دهد. سپس هر آیتم مسیر، عملیات HTTP (get، post، put، delete و غیره) را که می‌توان روی آن مسیر انجام داد، توصیف می‌کند.

درون هر عملیات، شما جزئیاتی مانند موارد زیر را تعریف می‌کنید:

۴. شیء `components`: بلوک‌های سازنده قابل استفاده مجدد

برای جلوگیری از تکرار (پیروی از اصل DRY)، OpenAPI شیء components را فراهم می‌کند. این یک ویژگی قدرتمند است که در آن می‌توانید عناصر قابل استفاده مجدد را تعریف کرده و در سراسر مشخصات خود با استفاده از اشاره‌گرهای $ref به آنها ارجاع دهید.

۵. شیء `security`: اعمال احراز هویت

پس از تعریف securitySchemes خود در components، از شیء security برای اعمال آنها استفاده می‌شود. شما می‌توانید امنیت را به صورت سراسری برای کل API یا به صورت جداگانه برای هر عملیات اعمال کنید، که این امکان را برای ترکیبی از نقاط پایانی عمومی و محافظت شده فراهم می‌کند.

چرا سازمان شما باید OpenAPI را اتخاذ کند: مزایای تجاری و فنی

اتخاذ مشخصات OpenAPI فقط یک انتخاب فنی نیست؛ این یک تصمیم استراتژیک است که کارایی، همکاری و کیفیت را در سراسر چرخه عمر توسعه نرم‌افزار به پیش می‌برد.

برای توسعه‌دهندگان: منبع واحد حقیقت

برای مدیران محصول و معماران: طراحی و حاکمیت

برای تسترها و تیم‌های تضمین کیفیت: اعتبارسنجی ساده شده

برای کاربران نهایی و شرکا: تجربه توسعه‌دهنده برتر (DX)

راهنمای عملی: ایجاد اولین سند OpenAPI شما

بیایید تئوری را با ایجاد یک مشخصات اولیه OpenAPI 3.0 برای «API کاتالوگ جهانی کتاب» خود به عمل تبدیل کنیم. ما از YAML به دلیل خوانایی آن استفاده خواهیم کرد.

مرحله ۱: تعریف اطلاعات پایه و سرورها

ما با فراداده و URL سرور تولید شروع می‌کنیم.


openapi: 3.0.3
info:
  title: API کاتالوگ جهانی کتاب
  description: یک API برای دسترسی به کاتالوگ کتاب‌ها از سراسر جهان.
  version: 1.0.0
servers:
  - url: https://api.globalbooks.com/v1

مرحله ۲: تعریف یک مدل داده قابل استفاده مجدد در `components`

قبل از تعریف نقاط پایانی، بیایید یک اسکیمای قابل استفاده مجدد برای یک شیء `Book` ایجاد کنیم. این کار طراحی ما را تمیز و سازگار نگه می‌دارد.


components:
  schemas:
    Book:
      type: object
      properties:
        isbn:
          type: string
          description: شماره استاندارد بین‌المللی کتاب.
          example: '978-0321765723'
        title:
          type: string
          description: عنوان کتاب.
          example: 'The C++ Programming Language'
        author:
          type: string
          description: نویسنده کتاب.
          example: 'Bjarne Stroustrup'
        publicationYear:
          type: integer
          description: سال انتشار کتاب.
          example: 2013
      required:
        - isbn
        - title
        - author

مرحله ۳: تعریف نقاط پایانی در `paths`

اکنون، دو نقطه پایانی ایجاد خواهیم کرد: یکی برای دریافت لیستی از کتاب‌ها و دیگری برای دریافت یک کتاب خاص بر اساس شابک (ISBN) آن.

به استفاده از $ref: '#/components/schemas/Book' توجه کنید. اینگونه است که ما به اسکیمای قابل استفاده مجدد `Book` خود ارجاع می‌دهیم.


paths:
  /books:
    get:
      summary: لیست تمام کتاب‌های موجود
      description: لیستی از کتاب‌ها را، که به صورت اختیاری فیلتر شده‌اند، برمی‌گرداند.
      operationId: listBooks
      responses:
        '200':
          description: یک پاسخ موفق با آرایه‌ای از کتاب‌ها.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Book'

  /books/{isbn}:
    get:
      summary: دریافت کتاب بر اساس شابک (ISBN)
      description: یک کتاب واحد را که با شابک آن مشخص شده است، برمی‌گرداند.
      operationId: getBookByIsbn
      parameters:
        - name: isbn
          in: path
          required: true
          description: شابک کتابی که باید بازیابی شود.
          schema:
            type: string
      responses:
        '200':
          description: کتاب درخواستی.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Book'
        '404':
          description: کتابی با شابک مشخص شده پیدا نشد.

مرحله ۴: افزودن امنیت

بیایید API خود را با یک کلید API ساده که باید در هدر ارسال شود، محافظت کنیم. ابتدا، طرح را در `components` تعریف می‌کنیم، سپس آن را به صورت سراسری اعمال می‌کنیم.


# این را به بخش 'components' اضافه کنید
components:
  # ... اسکیماهای قبلی
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

# این را در سطح ریشه سند اضافه کنید
security:
  - ApiKeyAuth: []

مرحله ۵: اعتبارسنجی و مصورسازی

با فایل کامل YAML خود، اکنون می‌توانید از ابزارهای مختلفی استفاده کنید:

اکوسیستم OpenAPI: ابزارها و فناوری‌ها

قدرت OAS با اکوسیستم وسیع و بالغ ابزارهای آن تقویت می‌شود. برای هر نیازی که داشته باشید، احتمالاً ابزاری برای آن وجود دارد:

آینده OpenAPI: OAS 3.1 و فراتر از آن

مشخصات OpenAPI به طور مداوم در حال تکامل است. آخرین نسخه اصلی، OAS 3.1، چندین بهبود قابل توجه را معرفی کرد:

این پیشرفت‌ها موقعیت OpenAPI را به عنوان عنصر مرکزی در یک معماری مدرن، API-محور و رویداد محور مستحکم می‌کند.

نتیجه‌گیری: سنگ بنای توسعه مدرن

مشخصات OpenAPI نحوه تفکر ما در مورد APIها را متحول کرده است. این مشخصات، مستندات API را از یک کار طاقت‌فرسا و اغلب نادیده گرفته شده به یک سند استراتژیک و زنده ارتقا داده است که کل چرخه عمر توسعه را هدایت می‌کند. OAS با ایفای نقش به عنوان یک قرارداد قابل خواندن توسط ماشین، همکاری را تقویت می‌کند، اتوماسیون قدرتمند را امکان‌پذیر می‌سازد، سازگاری را اعمال می‌کند و در نهایت منجر به ایجاد APIهای بهتر، قابل اعتمادتر و مصرف‌پذیرتر می‌شود.

چه شما یک توسعه‌دهنده، معمار، مدیر محصول یا تستر باشید، پذیرش مشخصات OpenAPI یک گام حیاتی به سوی تسلط بر توسعه نرم‌افزار مدرن است. اگر هنوز از آن استفاده نمی‌کنید، در نظر بگیرید که با پروژه بعدی خود شروع کنید. ابتدا قرارداد را تعریف کنید، آن را با تیم خود به اشتراک بگذارید و سطح جدیدی از کارایی و شفافیت را در همکاری‌های دیجیتال خود باز کنید.