Giriş
Yer Ayrıntıları (Yeni), Yakında Arama (Yeni) veya Metin Arama (Yeni) yöntemlerini çağırdığınızda yanıtta döndürülmesini istediğiniz alanları belirtmeniz gerekir. Döndürülen alanların varsayılan bir listesi yoktur. Bu listeyi atlarsanız yöntemler hata döndürür.
Desteklenen veri alanlarının ve bunlara karşılık gelen SKU'ların tam listesini Yer Veri Alanları (Yeni) bölümünde bulabilirsiniz. Her API'ye özgü alanlar hakkında bilgi için aşağıdakilere bakın:
- Yer Ayrıntıları (Yeni) FieldMask parametreleri
- Yakında Arama (Yeni) FieldMask parametreleri
- Text Search (New) FieldMask parametreleri
Yanıt alanı maskesi oluşturarak alan listesini belirtirsiniz. Ardından, $fields veya fields parametresini ya da X-Goog-FieldMask HTTP veya gRPC başlığını kullanarak yanıt alanı maskesini her iki yönteme de iletirsiniz.
Alan maskeleme, gereksiz veri istememenizi sağlayan iyi bir tasarım uygulamasıdır. Bu sayede gereksiz işlem süresinden ve faturalandırma ücretlerinden kaçınabilirsiniz.
Yanıt alanı maskesi tanımlama
Yanıt alanı maskesi, her yolun yanıt gövdesinde benzersiz bir alan belirttiği, virgülle ayrılmış bir yol listesidir. Yol, üst düzey yanıt mesajından başlar ve belirtilen alana giden, noktayla ayrılmış bir yol kullanır.
Alan yolunu aşağıdaki gibi oluşturun:
topLevelField[.secondLevelField][.thirdLevelField][...]
* alan maskesini kullanarak tüm alanları isteyebilirsiniz.
Alan maskelerinin nasıl oluşturulacağı hakkında daha fazla bilgi için field_mask.proto sayfasına bakın.
Hangi alan maskelerinin kullanılacağını belirleme
Hangi alan maskelerini kullanmak istediğinizi şu şekilde belirleyebilirsiniz:
*alan maskesini kullanarak tüm alanları isteyin.- Yanıttaki alanların hiyerarşisine bakın ve istediğiniz alanları belirleyin.
- Alan hiyerarşisini kullanarak alan maskenizi oluşturun.
Yakında Arama (Yeni) ve Metin Arama (Yeni) için yanıt alanı maskesi tanımlama
Yakında Arama (Yeni) ve Metin Arama (Yeni), yanıtın places alanında bir Place nesnesi dizisi döndürür. Bu API'ler için places, yanıtın üst düzey alanıdır.
Örneğin, Text Search (New)'den gelen yanıt nesnesinin tamamını görmek için:
curl -X POST -d '{
"textQuery" : "Spicy Vegetarian Food in Sydney, Australia"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: *' \
'https://places.googleapis.com/v1/places:searchText'Metin Arama (Yeni) çağrısından gelen tam yanıt nesnesi şu biçimdedir:
{ "places": [ { "name": "places/ChIJs5ydyTiuEmsR0fRSlU0C7k0", "id": "ChIJs5ydyTiuEmsR0fRSlU0C7k0", "types": [ "vegetarian_restaurant", "vegan_restaurant", "meal_takeaway", "restaurant", "food", "point_of_interest", "establishment" ], "nationalPhoneNumber": "0433 479 794", "internationalPhoneNumber": "+61 433 479 794", "formattedAddress": "29 King St, Sydney NSW 2000, Australia", "displayName": { "text": "Spiced @ Barangaroo", "languageCode": "en" }, ... }, ... ] }
Bu nedenle, bu API'ler için aşağıdaki biçimde bir alan maskesi belirtirsiniz:
places[.secondLevelField][.thirdLevelField][...]
Yalnızca formattedAddress ve displayName alanlarını döndürmek istiyorsanız alan maskenizi şu şekilde ayarlayın:
places.formattedAddress,places.displayName
displayName belirtildiğinde displayName öğesinin hem text hem de language alanları dahil edilir. Yalnızca text alanını istiyorsanız alan maskesini şu şekilde ayarlayın:
places.formattedAddress,places.displayName.text
Yer Ayrıntıları (Yeni) için yanıt alanı maskesi tanımlama
Yer Ayrıntıları (Yeni), aşağıdaki biçimde tek bir Place nesnesi döndürür:
{ "name": "places/ChIJkR8FdQNB0VQRm64T_lv1g1g", "id": "ChIJkR8FdQNB0VQRm64T_lv1g1g", "types": [ "locality", "political" ], "formattedAddress": "Trinidad, CA 95570, USA", "displayName": { "text": "Trinidad", "languageCode": "en" } ... }
Bu nedenle, döndürmek istediğiniz Place nesnesinin alanlarını belirterek bu API için bir alan maskesi belirtirsiniz:
curl -X GET -H 'Content-Type: application/json' \ -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: formattedAddress,displayName" \ https://places.googleapis.com/v1/places/ChIJj61dQgK6j4AR4GeTYWZsKWw
gRPC çağrısı
gRPC için yanıt alanı maskesini içeren bir değişken ayarlayın. Ardından bu değişkeni isteğe iletebilirsiniz.
const ( fieldMask = "places.formattedAddress,places.displayName" )
Alan yoluyla ilgili dikkat edilmesi gereken noktalar
Yalnızca yanıtta ihtiyaç duyduğunuz alanları ekleyin. Yalnızca ihtiyacınız olan alanları döndürme:
- İşleme sürelerini azaltarak sonuçlarınızın daha düşük gecikmeyle döndürülmesini sağlar.
- API'ye gelecekte daha fazla yanıt alanı eklenirse ve bu yeni alanlar ek hesaplama süresi gerektirirse gecikme performansının kararlı olmasını sağlar. Tüm alanları veya üst düzeydeki tüm alanları seçerseniz tüm yeni alanlar yanıtınıza otomatik olarak dahil edildiğinde performans düşüşü yaşayabilirsiniz.
- Daha küçük bir yanıt boyutu sağlar. Bu da daha yüksek ağ işleme hızı anlamına gelir.
- Gereksiz veri istememenizi sağlar. Bu sayede gereksiz işlem süresinden ve faturalandırılan ücretlerden kaçınabilirsiniz.