ভূমিকা
আপনি যখন জায়গার বিবরণ (নতুন), আশেপাশে সার্চ (নতুন), অথবা টেক্সট সার্চ (নতুন) পদ্ধতি কল করেন, তখন আপনাকে অবশ্যই নির্দিষ্ট করতে হবে যে আপনি উত্তরে কোন ফিল্ড ফেরত চান। রিটার্ন করা ফিল্ডের কোনও ডিফল্ট তালিকা নেই। আপনি এই তালিকা বাদ দিলে, পদ্ধতিগুলি একটি ত্রুটি ফেরত দেয়।
কাজ করে এমন ডেটা ফিল্ড এবং সেগুলির সাথে সংশ্লিষ্ট SKU-এর সম্পূর্ণ তালিকা Place Data Fields (নতুন)-এ পাওয়া যাবে। প্রতিটি API-এর জন্য নির্দিষ্ট ফিল্ড সম্পর্কে তথ্য পেতে, নিম্নলিখিত বিষয়গুলি দেখুন:
- জায়গার বিবরণ (নতুন) FieldMask প্যারামিটার
- Nearby Search (নতুন) FieldMask প্যারামিটার
- টেক্সট সার্চ (নতুন) FieldMask প্যারামিটার
আপনি উত্তরের ফিল্ড মাস্ক তৈরি করে ফিল্ডের তালিকা নির্দিষ্ট করেন। তারপরে আপনি $fields বা
fields প্যারামিটার ব্যবহার করে অথবা HTTP বা gRPC হেডার X-Goog-FieldMask ব্যবহার করে
দুটি পদ্ধতির মধ্যে যেকোনও একটিতে রেসপন্স ফিল্ড মাস্ক পাস করেন।
আপনি যাতে অপ্রয়োজনীয় ডেটা অনুরোধ না করেন তা নিশ্চিত করার জন্য ফিল্ড মাস্কিং হল একটি ভাল ডিজাইন প্র্যাক্টিস, যা অপ্রয়োজনীয় প্রসেসিং সময় ও বিলিং চার্জ এড়াতে সাহায্য করে।
রেসপন্স ফিল্ড মাস্কের সংজ্ঞা দাও
রেসপন্স ফিল্ড মাস্ক হল কমা দিয়ে আলাদা করা পাথের তালিকা, যেখানে প্রতিটি পাথ রেসপন্স বডিতে একটি অনন্য ফিল্ড নির্দিষ্ট করে। পাথটি টপ-লেভেল রেসপন্স মেসেজ থেকে শুরু হয় এবং নির্দিষ্ট ফিল্ডে ডট-বিভক্ত পাথ ব্যবহার করে।
নিম্নলিখিত উপায়ে ফিল্ড পাথ তৈরি করুন:
topLevelField[.secondLevelField][.thirdLevelField][...]
আপনি * ফিল্ড মাস্ক ব্যবহার করে সব ফিল্ডের জন্য অনুরোধ করতে পারবেন।
ফিল্ড মাস্ক কীভাবে তৈরি করতে হয় সেই সম্পর্কে আরও তথ্য পেতে, field_mask.proto দেখুন।
কোন ফিল্ড মাস্ক ব্যবহার করতে হবে তা নির্ধারণ করা
আপনি কোন ফিল্ড মাস্ক ব্যবহার করতে চান তা কীভাবে নির্ধারণ করবেন তা এখানে দেওয়া হল:
*-এর ফিল্ড মাস্ক ব্যবহার করে সব ফিল্ডের জন্য অনুরোধ করুন।- উত্তরে ফিল্ডের হায়ারার্কি দেখুন এবং কোন কোন ফিল্ড আপনি চান তা নির্ধারণ করুন।
- ফিল্ডের ক্রমপর্যায় ব্যবহার করে আপনার ফিল্ড মাস্ক তৈরি করুন।
'আশেপাশের সার্চ' (নতুন) ও 'টেক্সট সার্চ' (নতুন) কোয়েরির জন্য রেসপন্স ফিল্ড মাস্ক নির্ধারণ করা
'আশেপাশের সার্চ (নতুন)' ও 'টেক্সট সার্চ (নতুন)' উত্তরের places ফিল্ডে প্লেস
অবজেক্টের একটি অ্যারে রিটার্ন করে। এইসব API-এর ক্ষেত্রে, places হল
উত্তরের টপ-লেভেল ফিল্ড।
যেমন, টেক্সট সার্চ (নতুন) থেকে সম্পূর্ণ রেসপন্স অবজেক্ট দেখতে:
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'Text Search (New) কল থেকে পাওয়া সম্পূর্ণ রেসপন্স অবজেক্ট এই ফর্ম্যাটে থাকে:
{ "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" }, ... }, ... ] }
তাই, আপনি এই API-এর জন্য নিম্নলিখিত ফর্ম্যাটে ফিল্ড মাস্ক নির্দিষ্ট করেন:
places[.secondLevelField][.thirdLevelField][...]
আপনি যদি শুধুমাত্র formattedAddress এবং displayName ফিল্ডের ভ্যালু পেতে চান, তাহলে
আপনার ফিল্ড মাস্ক এগুলি হিসেবে সেট করুন:
places.formattedAddress,places.displayName
displayName উল্লেখ করলে, displayName-এর text ও language ফিল্ড
দুটিই অন্তর্ভুক্ত হয়। আপনি যদি শুধুমাত্র text ফিল্ড চান, তাহলে ফিল্ড মাস্ক এভাবে সেট করুন:
places.formattedAddress,places.displayName.text
'স্থান সম্পর্কিত বিবরণ (নতুন)' বিকল্পের জন্য উত্তর ফিল্ড মাস্ক নির্ধারণ করুন
Place Details (New) এই ফর্ম্যাটে একটি Place অবজেক্ট রিটার্ন করে:
{ "name": "places/ChIJkR8FdQNB0VQRm64T_lv1g1g", "id": "ChIJkR8FdQNB0VQRm64T_lv1g1g", "types": [ "locality", "political" ], "formattedAddress": "Trinidad, CA 95570, USA", "displayName": { "text": "Trinidad", "languageCode": "en" } ... }
তাই, আপনি এই API-এর জন্য ফিল্ড মাস্ক নির্দিষ্ট করেন, এর জন্য আপনি Place অবজেক্টের সেইসব ফিল্ড নির্দিষ্ট করেন যেগুলি আপনি ফেরত পেতে চান:
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 কল
gRPC-এর জন্য, এমন একটি ভেরিয়েবল সেট করুন যাতে রেসপন্স ফিল্ড মাস্ক থাকে। তারপরে আপনি সেই ভেরিয়েবলটি অনুরোধে পাস করতে পারবেন।
const ( fieldMask = "places.formattedAddress,places.displayName" )
ফিল্ড পাথ সংক্রান্ত বিবেচ্য বিষয়
উত্তরে শুধুমাত্র আপনার প্রয়োজনীয় ফিল্ডগুলি অন্তর্ভুক্ত করুন। আপনার প্রয়োজনীয় ফিল্ডগুলিই শুধু রিটার্ন করা:
- প্রসেসিংয়ের সময় কমায়, তাই আপনার ফলাফল কম লেটেন্সির সাথে ফেরত আসে।
- ভবিষ্যতে API আরও রেসপন্স ফিল্ড যোগ করলে এবং সেই নতুন ফিল্ডের জন্য অতিরিক্ত কম্পিউটেশন সময়ের প্রয়োজন হলে, স্টেবল লেটেন্সি পারফর্ম্যান্স নিশ্চিত করে। আপনি যদি সব ফিল্ড বেছে নেন অথবা টপ লেভেলে সব ফিল্ড বেছে নেন, তাহলে আপনার উত্তরে সব নতুন ফিল্ড অটোমেটিক যোগ করা হলে, পারফর্ম্যান্স খারাপ হতে পারে।
- উত্তরের সাইজ ছোট হয়, যার ফলে নেটওয়ার্কের থ্রুপুট বেশি হয়।
- আপনি যাতে অপ্রয়োজনীয় ডেটা অনুরোধ না করেন তা নিশ্চিত করে, যা অপ্রয়োজনীয় প্রসেসিং সময় ও বিল করা চার্জ এড়াতে সাহায্য করে।