Wybieranie pól do zwrócenia
Gdy wysyłasz prośbę o trasę lub macierz tras, musisz użyć maski pól, aby określić, jakie informacje powinny zostać zwrócone w odpowiedzi. Nie ma domyślnej listy zwracanych pól. Jeśli nie określisz maski pól, metody zwrócą błąd.
Użycie maski pól zapewnia też, że nie będziesz prosić o niepotrzebne dane, co z kolei pomaga zmniejszyć opóźnienie odpowiedzi i uniknąć zwracania informacji, których Twój system nie potrzebuje.
Listę potrzebnych pól określasz w masce pól odpowiedzi. Następnie przekazujesz
maskę pól odpowiedzi do dowolnej metody, używając parametru adresu URL $fields lub
fields, albo nagłówka HTTP lub gRPC X-Goog-FieldMask.
Więcej informacji o parametrach adresów URL znajdziesz w sekcji Parametry systemowe.
Definiowanie maski pól odpowiedzi
Maska pól odpowiedzi to lista ścieżek rozdzielonych przecinkami. Każda ścieżka określa unikalne pole w wiadomości odpowiedzi. Ścieżka zaczyna się od wiadomości odpowiedzi najwyższego poziomu i używa ścieżki rozdzielonej kropkami do określonego pola.
Utwórz i określ ścieżkę pola w ten sposób:
- Znajdź pola zawierające potrzebne informacje. Więcej informacji znajdziesz w opisie odwołań do pól.
- Określ ścieżki do potrzebnych pól i utwórz dla nich maski pól: więcej informacji znajdziesz w artykule Określanie maski pól, której chcesz użyć.
Połącz maski pól wszystkich potrzebnych pól, rozdzielając je przecinkami. Aby na przykład poprosić o
distanceMetersdla etapu trasy oraz czas trwania każdego kroku etapu trasy, wpisz je oba, rozdzielając je przecinkiem i bez spacji:routes.legs.distanceMeters,routes.legs.steps.duration
Wyślij maskę pól z żądaniem do interfejsu API. Na przykład w żądaniu curl maskę pól określisz za pomocą
-HiX-Goog-FieldMask:-H X-Goog-FieldMask: routes.legs.distanceMeters,routes.legs.steps.duration
Odwołania do pól
Aby zobaczyć pola, o które możesz poprosić w odpowiedzi za pomocą masek pól, zapoznaj się z odwołaniami do interfejsu Routes API Compute Routes lub Compute Route Matrix, które znajdziesz na tej liście. Pola określaj w notacji camel case, jak pokazano w odwołaniu. Na przykład routePreference.
Te odwołania zawierają dostępne pola, ale aby określić pełną ścieżkę maski pól, musisz zapoznać się z hierarchią pól. Więcej informacji o uzyskiwaniu hierarchii pól znajdziesz w artykule Określanie maski pól, której chcesz użyć.
- Maska pól obliczania trasy
- Maski pól obliczania macierzy tras
- REST: określa pola treści odpowiedzi, które mają zostać zwrócone.
- gRPC: określa pola obiektu RouteMatrixElement w odpowiedzi, które mają zostać zwrócone.
Określanie masek pól do użycia
Oto jak możesz określić pola, których chcesz użyć, i utworzyć dla nich maski pól:
- Poproś o wszystkie pola , używając maski pól
*. - Sprawdź hierarchię pól w odpowiedzi na pola, które Cię interesują.
Utwórz maski pól , korzystając z hierarchii pól pokazanej w poprzednim kroku, w tym formacie:
topLevelField[.secondLevelField][.thirdLevelField][...]
Na przykład w przypadku tej częściowej odpowiedzi z trasy:
"routes": [ { "legs": [ { "steps": [ {"distanceMeters": 119}, {"distanceMeters": 41} ] } ], "distanceMeters": 160 } ]
Jeśli chcesz zwrócić tylko pole distanceMeters dla etapu trasy, czyli ostatnie distanceMeters w poprzednim przykładzie, maska pól będzie wyglądać tak:
routes.legs.distanceMeters
Jeśli zamiast tego chcesz zwrócić pole distanceMeters dla każdego kroku etapu trasy, czyli distanceMeters w sekcji steps w poprzednim przykładzie, maska pól będzie wyglądać tak:
routes.legs.steps.distanceMeters
Jeśli chcesz zwrócić oba te pola, maska pól będzie wyglądać tak:
routes.legs.distanceMeters,routes.legs.steps.distanceMeters
Przykładowe ścieżki masek pól
W tej sekcji znajdziesz więcej przykładów określania ścieżki pola w ramach maski pól odpowiedzi w wywołaniach REST i gRPC.
Wywołanie REST do computeRoutes
W pierwszym przykładzie używasz wywołania REST do metody
computeRoutes, aby obliczyć
trasę. W tym przykładzie w nagłówku określasz maski pól, aby w odpowiedzi zwrócić pola distanceMeters i duration trasy. Pamiętaj, aby dodać do nazwy pola prefiks routes.
X-Goog-FieldMask: routes.distanceMeters,routes.duration
Wywołanie REST do computeRouteMatrix
W przypadku metody REST computeRouteMatrix
używanej do obliczania macierzy tras w nagłówku określ, aby dla każdej kombinacji punktu początkowego
i docelowego zwracać
originIndex, destinationIndex i duration:
X-Goog-FieldMask: originIndex,destinationIndex,duration
Wywołanie gRPC do computeRoutes
W przypadku metody gRPC computeRoutes używanej do obliczania trasy ustaw zmienną zawierającą maskę pól odpowiedzi, aby w odpowiedzi zwracać pola distanceMeters, duration i zakodowaną linię łamaną trasy. Następnie możesz przekazać tę zmienną do żądania:
const ( fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline" )
Wywołanie gRPC do computeRouteMatrix
W przypadku metody gRPC computeRouteMatrix używanej do obliczania macierzy tras ustaw zmienną zawierającą maskę pól odpowiedzi, aby określić zwracanie originIndex, destinationIndex i duration dla każdej kombinacji punktu początkowego i docelowego. Następnie możesz przekazać tę zmienną do żądania:
const ( fieldMask = "originIndex,destinationIndex,duration" )
Uwagi dotyczące ścieżki pola
W odpowiedzi uwzględniaj tylko te pola, które są Ci potrzebne, aby zwracać tylko te pola, których potrzebujesz:
- Skraca czas przetwarzania, dzięki czemu wyniki są zwracane z mniejszym opóźnieniem.
- Zapewnia stabilną wydajność opóźnienia. Jeśli wybierzesz wszystkie pola lub wszystkie pola na najwyższym poziomie, możesz zauważyć spadek wydajności, gdy zostaną dodane nowe pola, które będą automatycznie uwzględniane w odpowiedzi.
- Zmniejsza rozmiar odpowiedzi, co przekłada się na większą przepustowość sieci.
- Zapewnia, że nie będziesz prosić o niepotrzebne dane, co pomaga uniknąć niepotrzebnego czasu przetwarzania i naliczania opłat.
Więcej informacji o tworzeniu maski pól znajdziesz w field_mask.proto.