Chọn các trường cần trả về
Khi yêu cầu một tuyến đường hoặc ma trận tuyến đường, bạn phải sử dụng mặt nạ cho trường để chỉ định thông tin mà phản hồi cần trả về. Không có danh sách mặc định về các trường được trả về. Nếu bạn không chỉ định mặt nạ cho trường, các phương thức sẽ trả về lỗi.
Việc sử dụng mặt nạ cho trường cũng đảm bảo rằng bạn không yêu cầu dữ liệu không cần thiết. Điều này giúp giảm độ trễ phản hồi và tránh trả về thông tin mà hệ thống của bạn không cần.
Bạn chỉ định danh sách các trường cần thiết trong mặt nạ cho trường phản hồi. Sau đó, bạn sẽ truyền
mặt nạ cho trường phản hồi đến một trong hai phương thức bằng cách sử dụng tham số URL $fields hoặc
fields, hoặc bằng cách sử dụng tiêu đề HTTP hoặc gRPC X-Goog-FieldMask.
Để biết thêm thông tin về các tham số URL, hãy xem Tham số hệ thống.
Xác định mặt nạ cho trường phản hồi
Mặt nạ cho trường phản hồi là một danh sách được phân tách bằng dấu phẩy các đường dẫn, trong đó mỗi đường dẫn chỉ định một trường duy nhất trong thông báo phản hồi. Đường dẫn bắt đầu từ thông báo phản hồi cấp cao nhất và sử dụng đường dẫn được phân tách bằng dấu chấm đến trường được chỉ định.
Xây dựng và chỉ định đường dẫn cho trường như sau:
- Tìm các trường chứa thông tin bạn cần. Để biết thông tin chi tiết, hãy xem bài viết Tài liệu tham khảo về trường.
- Xác định đường dẫn cho các trường bạn cần và xây dựng mặt nạ cho trường cho các trường đó: Để biết thông tin chi tiết, hãy xem bài viết Xác định mặt nạ cho trường mà bạn muốn sử dụng.
Kết hợp mặt nạ cho trường cho tất cả các trường bạn cần, phân tách mặt nạ cho trường bằng dấu phẩy. Ví dụ: để yêu cầu
distanceMeterscho chặng tuyến đường, cộng với thời lượng cho từng bước của chặng tuyến đường, hãy nhập cả hai giá trị này, phân tách bằng dấu phẩy và không có dấu cách:routes.legs.distanceMeters,routes.legs.steps.duration
Gửi mặt nạ cho trường cùng với yêu cầu API. Ví dụ: trong yêu cầu curl, bạn sẽ chỉ định mặt nạ cho trường bằng
-HvàX-Goog-FieldMask:-H X-Goog-FieldMask: routes.legs.distanceMeters,routes.legs.steps.duration
Tài liệu tham khảo về trường
Để xem các trường mà bạn có thể yêu cầu trong phản hồi thông qua mặt nạ cho trường, hãy tham khảo tài liệu tham khảo về API Tuyến đường Tính toán tuyến đường hoặc Tính toán ma trận tuyến đường được liên kết trong danh sách sau. Chỉ định các trường theo kiểu lạc đà như trong tài liệu tham khảo. Ví dụ: routePreference.
Các tài liệu tham khảo này bao gồm các trường có sẵn. Tuy nhiên, bạn cần tham khảo hệ thống phân cấp của các trường để xác định đường dẫn đầy đủ của mặt nạ cho trường. Để biết thông tin chi tiết về cách lấy hệ thống phân cấp của các trường, hãy xem bài viết Xác định mặt nạ cho trường mà bạn muốn sử dụng.
- Tính toán mặt nạ cho trường tuyến đường
- REST: Chỉ định các trường của đối tượng
Tuyến đường trong
phản hồi cần trả về, được đặt trước bằng
routes., ví dụ:routes.distanceMeters. - gRPC: Chỉ định các trường của Tuyến đường đối tượng trong phản hồi cần trả về.
- REST: Chỉ định các trường của đối tượng
Tuyến đường trong
phản hồi cần trả về, được đặt trước bằng
- Tính toán mặt nạ cho trường Ma trận tuyến đường
- REST: Chỉ định các trường của Nội dung phản hồi cần trả về.
- gRPC: Chỉ định các trường của RouteMatrixElement đối tượng trong phản hồi cần trả về.
Xác định mặt nạ cho trường cần sử dụng
Sau đây là cách xác định các trường bạn muốn sử dụng và xây dựng mặt nạ cho trường cho các trường đó:
- Yêu cầu tất cả các trường bằng cách sử dụng mặt nạ cho trường
*. - Xem hệ thống phân cấp của các trường trong phản hồi cho các trường bạn muốn.
Xây dựng mặt nạ cho trường bằng cách sử dụng hệ thống phân cấp của các trường được hiển thị trong bước trước, theo định dạng sau:
topLevelField[.secondLevelField][.thirdLevelField][...]
Ví dụ: đối với phản hồi một phần này từ một tuyến đường:
"routes": [ { "legs": [ { "steps": [ {"distanceMeters": 119}, {"distanceMeters": 41} ] } ], "distanceMeters": 160 } ]
Nếu bạn chỉ muốn trả về trường distanceMeters cho chặng tuyến đường, tức là distanceMeters cuối cùng trong mẫu trước đó, thì mặt nạ cho trường của bạn sẽ như sau:
routes.legs.distanceMeters
Nếu bạn muốn trả về trường distanceMeters cho từng bước của chặng tuyến đường, tức là distanceMeters trong steps trong mẫu trước đó, thì mặt nạ cho trường của bạn sẽ như sau:
routes.legs.steps.distanceMeters
Nếu bạn muốn trả về cả hai trường, với kết quả ở trên, thì mặt nạ cho trường của bạn sẽ như sau:
routes.legs.distanceMeters,routes.legs.steps.distanceMeters
Ví dụ về đường dẫn cho mặt nạ cho trường
Phần này chứa thêm các ví dụ về cách chỉ định đường dẫn cho trường như một phần của mặt nạ cho trường phản hồi trong các lệnh gọi REST và gRPC.
Lệnh gọi REST đến computeRoutes
Trong ví dụ đầu tiên, bạn sử dụng lệnh gọi REST đến phương thức
computeRoutes để tính toán
một tuyến đường. Trong ví dụ này, trong tiêu đề, bạn chỉ định mặt nạ cho trường để trả về các trường distanceMeters và duration của tuyến đường trong phản hồi. Hãy nhớ đặt tiền tố tên trường bằng routes.
X-Goog-FieldMask: routes.distanceMeters,routes.duration
Lệnh gọi REST đến computeRouteMatrix
Đối với phương thức REST computeRouteMatrix
dùng để tính toán ma trận tuyến đường, trong tiêu đề, hãy chỉ định để trả về
originIndex, destinationIndex, và duration cho mỗi tổ hợp điểm gốc
và điểm đến:
X-Goog-FieldMask: originIndex,destinationIndex,duration
Lệnh gọi gRPC
Đối với gRPC, hãy đặt một biến chứa mặt nạ cho trường phản hồi. Sau đó, bạn có thể truyền biến đó đến yêu cầu.
const ( fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline" )
Những điều cần cân nhắc về đường dẫn cho trường
Chỉ đưa các trường mà bạn yêu cầu vào phản hồi để chỉ trả về các trường bạn cần:
- Giảm thời gian xử lý, nhờ đó, kết quả sẽ được trả về với độ trễ thấp hơn.
- Đảm bảo hiệu suất độ trễ ổn định. Nếu bạn chọn tất cả các trường hoặc nếu bạn chọn tất cả các trường ở cấp cao nhất, bạn có thể gặp phải tình trạng giảm hiệu suất khi các trường mới được thêm vào và sau đó tự động được đưa vào phản hồi.
- Giúp giảm kích thích thước phản hồi, từ đó giúp tăng thông lượng mạng.
- Đảm bảo rằng bạn không yêu cầu dữ liệu không cần thiết, giúp tránh thời gian xử lý không cần thiết và các khoản phí được tính.
Để biết thêm thông tin chi tiết về cách xây dựng mặt nạ cho trường, hãy xem field_mask.proto.