انتخاب نقطه پایانی

‫Route Optimization API نقطه‌های پایان زیر را دارد:

  • OptimizeTours: نقطه پایانی مسدودکننده برای درخواست‌های تکی.
  • OptimizeToursLongRunning: نقطه پایانی غیرمسدودکننده برای درخواست‌های تکی با زمان حل طولانی.
  • OptimizeToursUri: نقطه پایانی غیرمسدودکننده برای درخواست‌های تکی با الزامات داده بزرگ.
  • BatchOptimizeTours: نقطه پایانی غیرمسدودکننده برای چندین درخواست که به‌طور هم‌زمان پردازش می‌شوند.

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

مقایسه نقطه‌های پایانی

از جدول زیر برای شناسایی نقطه پایانی مناسب برای نیازهایتان استفاده کنید:

نقطه پایانی OptimizeTours OptimizeToursLongRunning OptimizeToursUri BatchOptimizeTours
نوع اجرا مسدود کردن غیرمسدودکننده غیرمسدودکننده غیرمسدودکننده
درخواست‌های پردازش‌شده تکی تکی تکی چندگانه
حداکثر اندازه درخواست کوچک متوسط بزرگ بزرگ
زمان حل کوتاه طولانی طولانی طولانی
به Google Cloud Storage نیاز دارد نه نه بله بله

آشنایی با مشخصه‌های نقطه پایان

جدول قبلی ویژگی‌های زیر را فهرست می‌کند تا به شما در انتخاب نقطه پایانی مناسب کمک کند:

  • نوع اجرا: تعیین می‌کند که برنامه شما چگونه اتصال شبکه را درحین انتظار برای پاسخ مدیریت کند. دو نوع وجود دارد:
    • مسدود کردن نقطه‌های پایانی: اتصال را تا زمانی که واکنش API برگردانده شود باز نگه دارید.
    • نقطه‌های پایانی غیرمسدودکننده: درخواست‌ها را در پس‌زمینه پردازش می‌کند. میانای برنامه‌سازی کاربردی فوراً شناسه عملیات طولانی‌مدت (LRO) را برمی‌گرداند که بعداً برای بازیابی نتایج آن را نظرسنجی می‌کنید.
  • درخواست‌های پردازش‌شده: تعیین می‌کند که نقطه پایان یک درخواست مسیریابی را مدیریت می‌کند یا چندین درخواست را به‌طور هم‌زمان پردازش می‌کند.
  • حداکثر اندازه درخواست: درخواست‌های کوچک و متوسط مستقیماً به‌صورت درون‌خطی ارسال می‌شوند و محدودیت‌های سمت سرور دارند. درخواست‌های بزرگ بااستفاده از Google Cloud Storage این محدودیت‌ها را دور می‌زنند. محدودیت‌های دقیق اندازه درخواست را در بخش‌های جزئیات نقطه پایانی پیدا کنید.
  • زمان حل: درخواست‌های ساده را می‌توان در مدت کوتاهی حل کرد، درحالی‌که حل درخواست‌های پیچیده زمان بیشتری می‌برد. ازآنجایی‌که زمان حل تعیین می‌کند که اتصال چه مدت باید باز بماند، انتخاب نقطه پایانی شما به محدودیت‌های زمان‌اتمام شما بستگی دارد. برای اطلاعات بیشتر، پیکربندی مهلت‌ها و زمان‌های اتمام را ببینید.
  • به Google Cloud Storage نیاز دارد: نقاط پایانی که درخواست‌های بزرگ را پردازش می‌کنند و پاسخ‌ها مستقیماً داده‌ها را در Google Cloud Storage می‌خوانند و می‌نویسند. به‌جای ارسال داده‌ها در درخواست اچ‌تی‌تی‌پی، درخواستتان را در یک سطل Cloud Storage بارگذاری می‌کنید و شناسه منبع یکسان را به میانای برنامه‌سازی کاربردی ارسال می‌کنید.

جزئیات نقطه پایان

Route Optimization API چهار نقطه پایان دارد. بخش‌های زیر توضیح می‌دهند هر نقطه پایانی چگونه کار می‌کند و شامل یک درخواست نمونه است.

OptimizeTours

OptimizeTours یک نقطه پایانی مسدودکننده است که برای درخواست‌های تکی با زمان حل کوتاه درنظر گرفته شده است. مسیر بهینه‌شده را مستقیماً در پاسخ برمی‌گرداند. چون این نقطه پایانی مسدودکننده است، باید اتصال شبکه خود را باز نگه دارید تا زمانی که API پردازش درخواست را تمام کند و پاسخ را برگرداند. این نقطه پایانی درخواست‌های درون‌خطی تا حدود ۴ مگابایت را می‌پذیرد.

مشاهده درخواست نمونه OptimizeTours

{
  "model": {
    "shipments":[
      {
        "pickups":[
          {
            "arrivalLocation": {
              "latitude": 37.425062,
              "longitude": -122.095355
            }
          }
        ],
        "deliveries":[
          {
            "arrivalLocation": {
              "latitude": 37.424215,
              "longitude": -122.095260
            }
          }
        ]
      }
    ],
    "vehicles":[
      {
        "travelMode": "DRIVING",
        "costPerKilometer": 1.0
      }
    ]
  }
}
    

OptimizeToursLongRunning

OptimizeToursLongRunning یک نقطه پایان غیرمسدودکننده برای درخواست‌های تکی با زمان حل طولانی است. شناسه «عملیات طولانی‌مدت» (LRO) را برمی‌گرداند. می‌توانید این شناسه را بااستفاده از نقطه پایانی GetOperation نظرسنجی کنید تا وضعیت درخواست را بررسی کنید و مسیرهای بهینه‌سازی‌شده نهایی را بازیابی کنید. این نقطه پایانی درخواست‌های درون‌خطی تا حدود ۸ مگابایت را می‌پذیرد.

مشاهده درخواست نمونه OptimizeToursLongRunning

{
  "model": {
    "shipments":[
      {
        "pickups":[
          {
            "arrivalLocation": {
              "latitude": 37.425062,
              "longitude": -122.095355
            }
          }
        ]
      }
    ],
    "vehicles":[
      {
        "travelMode": "DRIVING",
        "costPerKilometer": 1.0
      }
    ]
  }
}
    

OptimizeToursUri

OptimizeToursUri یک نقطه پایانی غیرمسدودکننده است که برای درخواست‌های تکی با زمان حل طولانی و الزامات داده بزرگ (بیش‌از ۸ مگابایت) درنظر گرفته شده است. شناسه «عملیات طولانی‌مدت» (LRO) را برمی‌گرداند. می‌توانید این شناسه را بااستفاده از نقطه پایانی GetOperation نظرسنجی کنید تا وضعیت درخواست را بررسی کنید.

به‌جای ارسال هم‌خط محموله، OptimizeToursRequest را در Google Cloud Storage بارگذاری می‌کنید. سپس نشانی‌های وب Cloud Storage را برای هر دو درخواست ورودی و مقصد برونداد به API ارسال می‌کنید. کارساز داده‌ها را از نشانی وب ورودی شما می‌خواند و OptimizeToursResponse نهایی را مستقیماً در نشانی وب خروجی شما می‌نویسد. پس‌از تکمیل عملیات، می‌توانید مسیرهای بهینه‌سازی‌شده را از این نشانی وب خروجی بخوانید.

مشاهده نمونه درخواست OptimizeToursUri

{
  "input": {
    "uri": "gs://your-bucket/path/input/object.json"
  },
  "output": {
    "uri": "gs://your-bucket/path/output/object.json"
  }
}
    

BatchOptimizeTours

BatchOptimizeTours یک نقطه پایانی غیرمسدودکننده است که برای چند درخواست بهینه‌سازی مستقل که به‌طور هم‌زمان پردازش می‌شوند درنظر گرفته شده است. شناسه «عملیات طولانی‌مدت» (LRO) را برمی‌گرداند. می‌توانید بااستفاده از نقطه پایانی GetOperation این شناسه را نظرسنجی کنید تا وضعیت درخواست را بررسی کنید و مسیرهای بهینه‌سازی‌شده نهایی را بازیابی کنید.

به‌جای ارسال هم‌خط محموله، چندین OptimizeToursRequest را در Google Cloud Storage بارگذاری می‌کنید. سپس نشانی‌های وب Cloud Storage را به API منتقل می‌کنید. سرور داده‌ها را از نشانی‌های وب ورودی شما می‌خواند و برای هر درخواست مستقیماً در نشانی‌های وب خروجی شما OptimizeToursResponse می‌نویسد.

مشاهده درخواست نمونه BatchOptimizeTours

{
  "modelConfigs": [
    {
      "inputConfig": {
        "gcsSource": {
          "uri": "gs://your-bucket/path/input/request_1.json"
        },
        "dataFormat": "JSON"
      },
      "outputConfig": {
        "gcsDestination": {
          "uri": "gs://your-bucket/path/output/response_1.json"
        },
        "dataFormat": "JSON"
      }
    },
    {
      "inputConfig": {
        "gcsSource": {
          "uri": "gs://your-bucket/path/input/request_2.json"
        },
        "dataFormat": "JSON"
      },
      "outputConfig": {
        "gcsDestination": {
          "uri": "gs://your-bucket/path/output/response_2.json"
        },
        "dataFormat": "JSON"
      }
    }
  ]
}