برنامه نویسی

REST APIS VS GRAPHQL: آیا یکی یا دیگری است؟

GraphQL و REST روشهای محبوب برای ساخت API هستند که انتقال داده ها را در شبکه ها تسهیل می کند. هر دو رویکرد بر اصول کلیدی مانند بی تابعیت و جداسازی واضح مشتری و سرور تأکید دارند. آنها به HTTP به عنوان پروتکل اصلی ارتباطات متکی هستند. هر دو روش انعطاف پذیر برای توسعه API هستند و به راحتی می توانند با زبان ها و برنامه های مختلف برنامه نویسی ادغام شوند. از آنجا که توسعه دهندگان شروع به استفاده بیشتر از API کردند ، نیاز به فیلتر و اصلاح پاسخ ها بوجود آمد. برخی از API ها از تماس های همزمان پشتیبانی می کنند ، جایی که یک خروجی به عنوان ورودی دیگری برای دیگری عمل می کند ، در حالی که برخی دیگر می توانند به موازات طراحی کار کنند. این فرآیند با نام ارکستراسیون API ، مزایای GraphQL را نسبت به API های REST برجسته می کند.
اما اگر ساعات و پول مهندسی قابل توجهی را برای توسعه API های REST برای سازمان خود سرمایه گذاری کرده اید ، چه می کنید؟ آیا ارزش بازنویسی همه اینها برای اجرای GraphQL است؟

خبر خوب این است که برای استفاده از GraphQL و استفاده از ارکستر API ، لازم نیست که هیچ یک از API های REST خود را بازنویسی کنید! اتصالات آپولو برای API های REST ، ادغام API های REST را در GraphQL خود آسان و سریع و بدون کد پیچیده برای نوشتن یا کامپایل کردن آسان و سریع می کند!

برای نشان دادن ، یک نقطه پایانی API REST را در نظر بگیرید /getOrders/:orderId، جایی که OrderID یک شناسه سفارش مانند “12345” را نشان می دهد. پاسخ به درخواست دریافت /getOrders/12345 خواهد بود:

  {
      "order_id": "12345",
      "customer": {
        "id": "C001",
        "name": "John Doe",
        "email": "johndoe@example.com"
      },
      "items": [
        {
          "product_id": "P1001",
          "name": "Wireless Mouse",
          "quantity": 2,
          "price": 25.99
        },
        {
          "product_id": "P1002",
          "name": "Mechanical Keyboard",
          "quantity": 1,
          "price": 89.99
        }
      ],
      "total_price": 141.97,
      "status": "Shipped",
      "order_date": "2025-02-25T14:30:00Z"
    }
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

برای ادغام این API REST با GraphQL ، فقط باید تعریف کنید @source دستورالعمل در طرحواره GraphQL شما مانند این:

extend schema
  @link(
    url: "https://specs.apollo.dev/federation/v2.10"
    import: ["@key", "@requires"]
  )
  @link(
    url: "https://specs.apollo.dev/connect/v0.1"
    import: ["@source", "@connect"]
  )
  @source(
    name: "orders"
    http: {
      baseURL: "<>"
  })
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سپس انواع و پرس و جوهای خود را اضافه کنید:

type Order {
  orderId: ID!
  customer: String!
  totalItems: Float!
  totalPrice: Float!
  status: String!
  orderDate: String!
}

type Query {
  getOrder(order_id: ID!): Order
    @connect(
      source: "orders"
      http: { GET: "/getOrders/{$args.order_id}" }
      selection: """
          orderId: order_id
          customer:customer.name
          totalItems: items->size
          totalPrice: total_price
          status
          orderDate: order_date
      """
    )
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در @connect دستورالعمل در پرس و جو به GraphQL دستور می دهد از کانکتور “سفارشات” استفاده کند. همچنین می توانید یک مسیر منبع را مشخص کنید که به پایه تعریف شده در @source بیانیه اعلامیه قسمت انتخاب نشان می دهد که چگونه می خواهید داده ها به مشتری برگردانده شوند. در اینجا ، می توانید به صورت اختیاری داده ها را تغییر داده و فیلتر کنید. برای کمک به شما در ساخت نقشه برداری انتخاب ، آپولو همانطور که در شکل زیر نشان داده شده است ، یک زمین بازی نقشه برداری رایگان را ارائه می دهد.

شرح تصویر
Mapper Connection ورودی را می گیرد و می تواند نقشه برداری را بر اساس آن ورودی پیشنهاد کند. در این مثال ، ما در حال تغییر نام زمینه ها و حتی تبدیل یک فیلد به نام Totlitems هستیم تا نشان دهیم که به جای لیست کردن موارد خود ، تعداد کالاهای مرتبه ای را در خود نشان می دهد (به عنوان مثال ، “Totalitems: موارد-> اندازه”). با استفاده از جعبه ماسه ای آپولو که با Rover CLI گنجانده شده است ، می توانید نمایش داده های Ad-Hoc GraphQL را اجرا کنید. در شکل زیر ، ما با عبور از “12345” پرس و جو GetOrder را اجرا کردیم و داده های برگشتی نشان داده شده از API REST ما است.

شرح تصویر
تمام این پیکربندی بدون هیچ کد رویه ای ، صرفه جویی در وقت و ایجاد یکپارچه سازی API های REST موجود در نمودار انجام شد!

برای اطلاعات بیشتر در مورد اتصالات آپولو ، موارد زیر را بررسی کنید:

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا