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

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 می‌خوانند و می‌نویسند. به‌جای ارسال داده‌ها در درخواست HTTP، درخواستتان را در یک سطل Cloud Storage بارگذاری می‌کنید و URI را به API ارسال می‌کنید.

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

‫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 بارگذاری می‌کنید. سپس URIهای Cloud Storage را برای هر دو درخواست ورودی و مقصد خروجی به API ارسال می‌کنید. سرور داده‌ها را از URI ورودی شما می‌خواند و OptimizeToursResponse نهایی را مستقیماً در URI خروجی شما می‌نویسد. پس‌از تکمیل عملیات، می‌توانید مسیرهای بهینه‌شده را از این شناسه منبع یکسان خروجی بخوانید.

مشاهده نمونه درخواست 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 را به میانای برنامه‌سازی کاربردی ارسال می‌کنید. سرور داده‌ها را از URIهای ورودی شما می‌خواند و OptimizeToursResponse را برای هر درخواست مستقیماً در URIهای خروجی شما می‌نویسد.

مشاهده درخواست نمونه 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"
      }
    }
  ]
}