เอกสารนี้อธิบายขั้นตอนที่จำเป็นในการเริ่มใช้ Route Optimization API
ข้อกำหนดเบื้องต้น
ขั้นตอนนี้จะแนะนำวิธีตั้งค่าบัญชี Google Cloud และโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน นอกจากนี้ คุณควรทำความคุ้นเคยกับวิธีเรียกเก็บเงินสำหรับการใช้ Route Optimization API ด้วย
- ตรวจสอบการเรียกเก็บเงินและค่าใช้จ่ายสำหรับการใช้งานที่การใช้งานและการเรียกเก็บเงินของ Route Optimization API
ตรวจสอบว่าคุณมีบัญชี Google Cloud
ลงชื่อเข้าใช้คอนโซล Google Cloudยืนยันว่าคุณมีโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
ไปที่หน้าการเรียกเก็บเงิน- เลือกโปรเจ็กต์เพื่อเปิดหน้าการเรียกเก็บเงิน
ในหน้าการเรียกเก็บเงิน ให้ทำดังนี้
- หากเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ที่เลือกไว้แล้ว และคุณมีบัญชีสำหรับการเรียกเก็บเงินเพียงบัญชีเดียว หน้าการเรียกเก็บเงินจะเปิดขึ้น
- หากมีบัญชีสำหรับการเรียกเก็บเงินหลายบัญชี ให้เลือกไปที่บัญชีสำหรับการเรียกเก็บเงินที่ลิงก์ไว้เพื่อดูรายละเอียดเกี่ยวกับบัญชีสำหรับการเรียกเก็บเงินที่เชื่อมโยงกับโปรเจ็กต์
- หากมีบัญชีสำหรับการเรียกเก็บเงินอยู่แล้วแต่ไม่ได้เชื่อมโยงกับโปรเจ็กต์ ระบบจะแจ้งให้คุณลิงก์บัญชีสำหรับการเรียกเก็บเงินกับโปรเจ็กต์
- หากไม่มีบัญชีสำหรับการเรียกเก็บเงินหรือต้องการสร้างบัญชีสำหรับการเรียกเก็บเงินใหม่ ให้เลือกจัดการบัญชีสำหรับการเรียกเก็บเงินเพื่อสร้างบัญชีสำหรับการเรียกเก็บเงินใหม่ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อสร้างบัญชีสำหรับการเรียกเก็บเงินใน Cloud แบบให้บริการเองใหม่
เปิดใช้ API
ก่อนที่จะใช้ Route Optimization API ได้ คุณต้องใช้คอนโซล Google Cloud หรือคำสั่ง gcloud เพื่อเปิดใช้ในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google Cloud
วิธีเปิดใช้ API
คอนโซล
เปิดหน้าผลิตภัณฑ์ในคอนโซล Google Cloud โดยทำดังนี้
เปิดใช้ Route Optimization APIคลิกปุ่มเปิดใช้
gcloud
gcloud services enable \ --project "PROJECT" \ "routeoptimization.googleapis.com"
อ่านข้อมูลเพิ่มเติมเกี่ยวกับ Google Cloud SDK, การติดตั้ง Cloud SDK และคำสั่งต่อไปนี้
ผลิตภัณฑ์ Google Maps Platform กำหนดให้การเรียก API ต้องมีโทเค็น OAuth เพื่อป้องกันการใช้งานที่ไม่ได้รับอนุญาต
สร้างโทเค็น OAuth
Route Optimization API รองรับ OAuth 2.0 สำหรับการตรวจสอบสิทธิ์ Google รองรับสถานการณ์ OAuth 2.0 ทั่วไป เช่น สถานการณ์สำหรับเว็บเซิร์ฟเวอร์
เอกสารนี้อธิบายวิธีส่งโทเค็น OAuth ไปยังการเรียก Route Optimization API ในสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ OAuth ในสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ได้ที่หัวข้อวิธีการตรวจสอบสิทธิ์ที่ Google
คุณสามารถเรียกใช้ Google Maps API ได้โดยตรงด้วยการส่งคำขอ API ไปยังเซิร์ฟเวอร์ หรือจะใช้ไลบรารีของไคลเอ็นต์เพื่อลดความซับซ้อนของโค้ดก็ได้ Google Maps มีไลบรารีของไคลเอ็นต์สำหรับ Go, Java, Node.js และ Python ดูข้อมูลเพิ่มเติมได้ที่ไลบรารีของไคลเอ็นต์ Route Optimization API
ภาพรวมของ OAuth
คุณสร้างและจัดการโทเค็นเพื่อการเข้าถึงด้วย OAuth ได้หลายวิธี โดยขึ้นอยู่กับสภาพแวดล้อมการติดตั้งใช้งาน
คุณสามารถใช้ OAuth 2.0 สำหรับการโต้ตอบระหว่างเซิร์ฟเวอร์กับเซิร์ฟเวอร์ระหว่างแอปพลิเคชันของคุณกับบริการของ Google ในสถานการณ์นี้ คุณจะใช้บัญชีบริการที่เชื่อมโยงกับแอปพลิเคชันของคุณแทนที่จะเป็นผู้ใช้แต่ละราย คุณสามารถส่งคำขอ API โดยใช้บัญชีบริการโดยไม่ต้องเกี่ยวข้องกับผู้ใช้โดยตรง ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการตรวจสอบสิทธิ์ได้ที่หัวข้อวิธีการตรวจสอบสิทธิ์ที่ Google
หรือจะผสานรวม Route Optimization API เข้ากับแอปบนอุปกรณ์เคลื่อนที่ Android หรือ iOS ก็ได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ OAuth และการจัดการโทเค็นเพื่อการเข้าถึงสำหรับสภาพแวดล้อมการติดตั้งใช้งานต่างๆ ได้ที่หัวข้อการใช้ OAuth 2.0 เพื่อเข้าถึง Google API
ขอบเขต OAuth
หากต้องการใช้ OAuth กับ Route Optimization API คุณต้องกำหนดขอบเขตต่อไปนี้ให้กับโทเค็น OAuth
https://www.googleapis.com/auth/cloud-platform
กำหนดค่าบทบาท
เอกสารนี้ให้ข้อมูลเกี่ยวกับบทบาทและสิทธิ์ Identity and Access Management (IAM) สำหรับการเพิ่มประสิทธิภาพเส้นทาง IAM ช่วยให้คุณให้สิทธิ์เข้าถึงแบบละเอียดแก่ทรัพยากร Route Optimization ที่เฉพาะเจาะจง และช่วยป้องกันการเข้าถึงทรัพยากรอื่นๆ IAM ช่วยให้คุณใช้หลักการรักษาความปลอดภัยของการให้สิทธิ์ขั้นต่ำที่สุด ซึ่งระบุว่าไม่ควรมีใครได้รับสิทธิ์มากกว่าที่จำเป็นจริงๆ
เมื่อผู้ใช้หลัก (ผู้ใช้ กลุ่ม หรือบัญชีบริการ) เรียกใช้ Google Cloud API ผู้ใช้หลักรายนั้นต้องมีสิทธิ์ IAM ที่เหมาะสมในการใช้ทรัพยากร หากต้องการให้สิทธิ์ที่จำเป็นแก่ผู้ใช้หลัก คุณต้องให้บทบาท IAM แก่ผู้ใช้หลัก
หากต้องการทำความคุ้นเคยกับการจัดการการเข้าถึงใน Google Cloud โดยทั่วไป โปรดดูภาพรวมของ IAM
บทบาท IAM ที่กำหนดไว้ล่วงหน้าเพื่ออนุญาตให้ผู้ใช้หลักเข้าถึงการเพิ่มประสิทธิภาพเส้นทางมีดังนี้
-
Route Optimization Editor (roles/routeoptimization.editor): ให้สิทธิ์ผู้ใช้หรือบัญชีบริการในการอ่านและเขียนทรัพยากรการเพิ่มประสิทธิภาพเส้นทางในโปรเจ็กต์ ซึ่งรวมถึงความสามารถในการเรียกใช้OptimizeToursและBatchOptimizeToursตลอดจนดึงข้อมูลการดำเนินการที่ใช้เวลานานโดยใช้GetOperation -
Route Optimization Viewer (roles/routeoptimization.viewer): ให้สิทธิ์การเข้าถึงระดับอ่านอย่างเดียวแก่ทรัพยากรการเพิ่มประสิทธิภาพเส้นทางในโปรเจ็กต์ บทบาทนี้ช่วยให้สามารถเรียกใช้OptimizeToursและเข้าถึงการดำเนินการที่ใช้เวลานานโดยใช้GetOperationได้
gcloud projects add-iam-policy-binding PROJECT \ --member user:someone@example.com \ --role roles/routeoptimization.editor
ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ ให้สิทธิ์บทบาท IAM โดยใช้คอนโซล Google Cloud
ตัวอย่าง: ลองเรียกใช้ REST API ในสภาพแวดล้อมการพัฒนาซอฟต์แวร์ในเครื่อง
หากไม่มีสภาพแวดล้อมที่สร้างโทเค็นและต้องการลองใช้ Route Optimization API กับโทเค็น OAuth ให้ใช้ขั้นตอนในส่วนนี้
ตัวอย่างนี้อธิบายวิธีใช้โทเค็น OAuth ที่ได้จากข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน (ADC) เพื่อทำการเรียก ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ ADC เพื่อเรียกใช้ Google API ด้วยไลบรารีของไคลเอ็นต์ได้ที่หัวข้อตรวจสอบสิทธิ์โดยใช้ไลบรารีของไคลเอ็นต์
ใช้ขั้นตอน REST ต่อไปนี้สำหรับการพัฒนาหรือการทดสอบเท่านั้น ไม่ใช่สำหรับการใช้งานจริง
ข้อกำหนดเบื้องต้น
ก่อนส่งคำขอ REST โดยใช้ ADC ให้ใช้ gcloud CLI เพื่อระบุข้อมูลเข้าสู่ระบบให้กับ ADC ดังนี้
ติดตั้งและเริ่มต้นใช้งาน
gcloudCLI ดูข้อมูลเพิ่มเติมได้ที่ติดตั้ง gcloud CLIตรวจสอบสิทธิ์ด้วย
gcloudCLI โดยทำดังนี้gcloud auth application-default login
ทำตามขั้นตอนการลงชื่อเข้าใช้ให้เสร็จสมบูรณ์เพื่อบันทึกข้อมูลเข้าสู่ระบบในไฟล์ข้อมูลเข้าสู่ระบบในเครื่องที่ ADC ใช้
ดูข้อมูลเพิ่มเติมได้ที่หัวข้อตั้งค่า ADC สำหรับสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ในเครื่อง
ส่งคำขอ REST
ในตัวอย่างนี้ คุณส่งส่วนหัวของคำขอ 2 รายการดังนี้
ส่งโทเค็น OAuth ในส่วนหัว
Authorizationโดยใช้คำสั่งต่อไปนี้เพื่อสร้างโทเค็นgcloud auth application-default print-access-tokenโทเค็นที่แสดงผลมีขอบเขตเป็น
https://www.googleapis.com/auth/cloud-platformส่งรหัสหรือชื่อโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงินในส่วนหัว
X-Goog-User-Project
หากต้องการเรียกใช้ Route Optimization API โดยใช้โทเค็น OAuth ให้ทำตามขั้นตอนต่อไปนี้
ในตัวอย่างโค้ดต่อไปนี้ ให้แทนที่ PROJECT_NUMBER_OR_ID ด้วยหมายเลขหรือรหัสโปรเจ็กต์ Google Cloud
curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data-binary @- << EOM { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.73881799999999, "longitude": -122.4161 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.79581, "longitude": -122.4218856 } } ] } ], "vehicles": [ { "startLocation": { "latitude": 37.73881799999999, "longitude": -122.4161 }, "endLocation": { "latitude": 37.73881799999999, "longitude": -122.4161 } } ], "globalStartTime": "2023-01-13T16:00:00-08:00", "globalEndTime": "2023-01-14T16:00:00-08:00" } } EOMหากต้องการคัดลอกคำสั่ง
curlให้คลิกคัดลอกในตัวอย่างโค้ดวางคำสั่งในหน้าต่างเทอร์มินัล แล้วเรียกใช้
การตอบกลับเป็นออบเจ็กต์ JSON:
{
"routes": [
{
"vehicleStartTime": "2023-01-14T00:00:00Z",
"vehicleEndTime": "2023-01-14T00:39:22Z",
"visits": [
{
"isPickup": true,
"startTime": "2023-01-14T00:00:00Z",
"detour": "0s"
},
{
"startTime": "2023-01-14T00:19:53Z",
"detour": "0s"
}
],
"transitions": [
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2023-01-14T00:00:00Z"
},
{
"travelDuration": "1193s",
"travelDistanceMeters": 9007,
"waitDuration": "0s",
"totalDuration": "1193s",
"startTime": "2023-01-14T00:00:00Z"
},
{
"travelDuration": "1169s",
"travelDistanceMeters": 9546,
"waitDuration": "0s",
"totalDuration": "1169s",
"startTime": "2023-01-14T00:19:53Z"
}
],
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "2362s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2362s",
"travelDistanceMeters": 18553
}
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2362s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2362s",
"travelDistanceMeters": 18553
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2023-01-14T00:00:00Z",
"latestVehicleEndTime": "2023-01-14T00:39:22Z"
}
}
การแก้ปัญหา
หากคำขอแสดงข้อความแสดงข้อผิดพลาดที่ระบุว่า API นี้ไม่รองรับข้อมูลเข้าสู่ระบบของผู้ใช้ปลายทาง โปรดดูหัวข้อแก้ปัญหาการตั้งค่า ADC