Google ডেটা API প্রোটোকল রেফারেন্স

এই ডকুমেন্টটি Google Data API-এর দ্বারা ব্যবহৃত প্রোটোকল বর্ণনা করে, যার মধ্যে একটি ক্যোয়ারী কেমন দেখায়, ফলাফল কেমন দেখায় ইত্যাদির তথ্য সহ।

Google Data API সম্পর্কে আরও তথ্যের জন্য, Google Data Developer's Guide নথি এবং প্রোটোকল গাইড দেখুন।

শ্রোতা

এই দস্তাবেজটি Google Data API-এর দ্বারা ব্যবহৃত XML ফর্ম্যাট এবং প্রোটোকলের বিশদ বিবরণ বুঝতে ইচ্ছুক যেকোন ব্যক্তির জন্য।

আপনি যদি Google ডেটা ক্লায়েন্ট API ব্যবহার করে এমন কোড লিখতে চান তবে আপনাকে এই বিবরণগুলি জানার দরকার নেই; পরিবর্তে, আপনি ভাষা-নির্দিষ্ট ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে পারেন।

কিন্তু আপনি যদি প্রোটোকল বুঝতে চান তবে এই নথিটি পড়ুন। উদাহরণ স্বরূপ, আপনি এই নথিটি পড়তে চাইতে পারেন যা আপনাকে নিম্নলিখিত কাজগুলির মধ্যে যেকোনো একটিতে সাহায্য করতে পারে:

  • Google ডেটা আর্কিটেকচারের মূল্যায়ন করা হচ্ছে
  • প্রদত্ত Google ডেটা ক্লায়েন্ট লাইব্রেরি ব্যবহার না করে প্রোটোকল ব্যবহার করে কোডিং
  • একটি নতুন ভাষায় একটি ক্লায়েন্ট লাইব্রেরি লেখা

এই দস্তাবেজটি অনুমান করে যে আপনি XML, নেমস্পেস, সিন্ডিকেটেড ফিড এবং HTTP-তে GET , POST , PUT , এবং DELETE অনুরোধগুলি, সেইসাথে HTTP-এর একটি "রিসোর্স" ধারণার বুনিয়াদি বোঝেন৷ এই জিনিসগুলি সম্পর্কে আরও তথ্যের জন্য, এই নথির অতিরিক্ত সংস্থান বিভাগটি দেখুন।

এই নথিটি কোনো নির্দিষ্ট প্রোগ্রামিং ভাষার উপর নির্ভর করে না; আপনি যে কোনও প্রোগ্রামিং ভাষা ব্যবহার করে Google ডেটা বার্তা পাঠাতে এবং গ্রহণ করতে পারেন যা আপনাকে HTTP অনুরোধগুলি ইস্যু করতে এবং XML-ভিত্তিক প্রতিক্রিয়াগুলিকে পার্স করতে দেয়৷

প্রোটোকল বিশদ

এই বিভাগটি Google ডেটা ডকুমেন্ট ফরম্যাট এবং ক্যোয়ারী সিনট্যাক্স বর্ণনা করে।

নথি বিন্যাস

Google Data, Atom, এবং RSS 2.0 সকলেই একই মৌলিক ডেটা মডেল শেয়ার করে: একটি ধারক যা কিছু বৈশ্বিক ডেটা এবং যেকোনো সংখ্যক এন্ট্রি উভয়ই ধারণ করে। প্রতিটি প্রোটোকলের জন্য, বিন্যাস একটি বেস স্কিমা দ্বারা সংজ্ঞায়িত করা হয়, কিন্তু এটি বিদেশী নামস্থান ব্যবহার করে প্রসারিত করা যেতে পারে।

গুগল ডেটা এপিআইগুলি হয় অ্যাটম সিন্ডিকেশন ফর্ম্যাট (পড়া এবং লেখা উভয়ের জন্য) বা আরএসএস ফর্ম্যাট (শুধু পড়ার জন্য) ব্যবহার করতে পারে।

এটম হল গুগল ডেটার ডিফল্ট ফর্ম্যাট। RSS বিন্যাসে একটি প্রতিক্রিয়া অনুরোধ করতে, /alt=rss/ প্যারামিটার ব্যবহার করুন; আরও তথ্যের জন্য, ক্যোয়ারী অনুরোধ দেখুন।

আপনি যখন RSS ফর্ম্যাটে ডেটার অনুরোধ করেন, তখন Google ডেটা RSS ফর্ম্যাটে একটি ফিড (বা সংস্থানের অন্যান্য উপস্থাপনা) সরবরাহ করে। যদি একটি প্রদত্ত Google ডেটা সম্পত্তির জন্য কোন সমতুল্য RSS সম্পত্তি না থাকে, তাহলে Google ডেটা অ্যাটম বৈশিষ্ট্য ব্যবহার করে, এটিকে একটি উপযুক্ত নামস্থান দিয়ে লেবেল করে নির্দেশ করে যে এটি RSS-এর একটি এক্সটেনশন।

দ্রষ্টব্য : অ্যাটম ফরম্যাটে বেশিরভাগ Google ডেটা ফিড ফিড উপাদানে একটি xmlns অ্যাট্রিবিউট নির্দিষ্ট করে ডিফল্ট নেমস্পেস হিসাবে অ্যাটম নেমস্পেস ব্যবহার করে; এটি কিভাবে করতে হয় তার উদাহরণের জন্য উদাহরণ বিভাগটি দেখুন। সুতরাং, এই নথির উদাহরণগুলি স্পষ্টভাবে atom: একটি এটম-ফরম্যাট ফিডের উপাদানগুলির জন্য৷

নিম্নলিখিত টেবিলগুলি স্কিমার উপাদানগুলির অ্যাটম এবং আরএসএস উপস্থাপনা দেখায়। এই সারণীতে উল্লিখিত নয় এমন সমস্ত ডেটা প্লেইন এক্সএমএল হিসাবে বিবেচিত হয় এবং উভয় উপস্থাপনায় একই দেখায়। অন্যথায় নির্দেশিত না হলে, একটি প্রদত্ত কলামের XML উপাদানগুলি সেই কলামের সাথে সম্পর্কিত নামস্থানে থাকে। এই সারাংশ স্ট্যান্ডার্ড XPath স্বরলিপি ব্যবহার করে: বিশেষত, স্ল্যাশগুলি উপাদানের শ্রেণিবিন্যাস দেখায় এবং একটি @ চিহ্ন একটি উপাদানের একটি বৈশিষ্ট্য নির্দেশ করে।

নিম্নলিখিত টেবিলের প্রতিটিতে, হাইলাইট করা আইটেমগুলি প্রয়োজন।

নিম্নলিখিত টেবিলটি একটি Google ডেটা ফিডের উপাদানগুলি দেখায়:

ফিড স্কিমা আইটেম পরমাণুর প্রতিনিধিত্ব আরএসএস প্রতিনিধিত্ব
ফিড শিরোনাম /feed/title /rss/channel/title
ফিড আইডি /feed/id /rss/channel/atom:id
ফিড এইচটিএমএল লিঙ্ক /feed/link[@rel="alternate"] \
[@type="text/html"]/@href
/rss/channel/link
ফিড বিবরণ /feed/subtitle /rss/channel/description
ফিড ভাষা /feed/@xml:lang /rss/channel/language
ফিড কপিরাইট /feed/rights /rss/channel/copyright
লেখক ফিড

/feed/author/name
/feed/author/email

(কিছু ক্ষেত্রে প্রয়োজনীয়; পরমাণুর স্পেসিফিকেশন দেখুন।)

/rss/channel/managingEditor
ফিড শেষ আপডেট তারিখ /feed/updated
(RFC 3339 ফর্ম্যাট)
/rss/channel/lastBuildDate
(RFC 822 ফরম্যাট)
ফিড বিভাগ /feed/category/@term /rss/channel/category
ফিড ক্যাটাগরি স্কিম /feed/category/@scheme /rss/channel/category/@domain
ফিড জেনারেটর /feed/generator
/feed/generator/@uri
/rss/channel/generator
ফিড আইকন /feed/icon /rss/channel/image/url (যদি না সেখানে একটি লোগোও থাকে, যে ক্ষেত্রে আইকনটি ফিডে অন্তর্ভুক্ত করা হয় না)
ফিড লোগো /feed/logo /rss/channel/image/url

নিম্নলিখিত টেবিলটি একটি Google ডেটা অনুসন্ধান-ফলাফল ফিডের উপাদানগুলি দেখায়৷ মনে রাখবেন যে Google ডেটা তার অনুসন্ধান-ফলাফল ফিডে কিছু OpenSearch 1.1 প্রতিক্রিয়া উপাদান প্রকাশ করে।

অনুসন্ধান ফলাফল ফিড স্কিমা আইটেম পরমাণুর প্রতিনিধিত্ব আরএসএস/ওপেন সার্চ রিপ্রেজেন্টেশন
অনুসন্ধান ফলাফলের সংখ্যা /feed/openSearch:totalResults /rss/channel/openSearch:totalResults
অনুসন্ধান ফলাফল শুরু সূচক /feed/openSearch:startIndex /rss/channel/openSearch:startIndex
প্রতি পৃষ্ঠায় অনুসন্ধান ফলাফলের সংখ্যা /feed/openSearch:itemsPerPage /rss/channel/openSearch:itemsPerPage

নিম্নলিখিত টেবিলটি একটি Google ডেটা এন্ট্রির উপাদানগুলি দেখায়:

এন্ট্রি স্কিমা আইটেম পরমাণুর প্রতিনিধিত্ব আরএসএস প্রতিনিধিত্ব
এন্ট্রি আইডি /feed/entry/id /rss/channel/item/guid
এন্ট্রি সংস্করণ আইডি EditURI-তে ঐচ্ছিকভাবে এম্বেড করা হয়েছে (এই নথির আশাবাদী সঙ্গতি বিভাগ দেখুন)। -
এন্ট্রি শিরোনাম /feed/entry/title /rss/channel/item/title
এন্ট্রি লিঙ্ক /feed/entry/link /rss/channel/item/link
/rss/channel/item/enclosure
/rss/channel/item/comments
এন্ট্রি সারাংশ

/feed/entry/summary

(কিছু ক্ষেত্রে প্রয়োজনীয়; পরমাণুর স্পেসিফিকেশন দেখুন।)

/rss/channel/item/atom:summary
এন্ট্রি বিষয়বস্তু

/feed/entry/content

(যদি কোন বিষয়বস্তুর উপাদান না থাকে, তাহলে এন্ট্রিতে অন্তত একটি <link rel="alternate"> উপাদান থাকতে হবে।)

/rss/channel/item/description
এন্ট্রি লেখক

/feed/entry/author/name
/feed/entry/author/email

(কিছু ক্ষেত্রে প্রয়োজনীয়; পরমাণুর স্পেসিফিকেশন দেখুন।)

/rss/channel/item/author
এন্ট্রি বিভাগ /feed/entry/category/@term /rss/channel/item/category
এন্ট্রি ক্যাটাগরি স্কিম /feed/entry/category/@scheme /rss/channel/item/category/@domain
এন্ট্রি প্রকাশের তারিখ /feed/entry/published
(RFC 3339)
/rss/channel/item/pubDate
(RFC 822)
এন্ট্রি আপডেট তারিখ /feed/entry/updated
(RFC 3339)
/rss/channel/item/atom:updated
(RFC 3339)

প্রশ্ন

এই বিভাগটি বর্ণনা করে কিভাবে ক্যোয়ারী সিস্টেম ব্যবহার করতে হয়।

মডেল ডিজাইনের নীতিগুলি জিজ্ঞাসা করুন

ক্যোয়ারী মডেল ইচ্ছাকৃতভাবে খুব সহজ. মৌলিক নীতিগুলি হল:

  • ক্যোয়ারীগুলিকে HTTP হেডার বা পেলোডের অংশ হিসাবে না করে HTTP URI হিসাবে প্রকাশ করা হয়। এই পদ্ধতির একটি সুবিধা হল যে আপনি একটি প্রশ্নের সাথে লিঙ্ক করতে পারেন।
  • পূর্বাভাস একটি একক আইটেম স্কোপ করা হয়. সুতরাং, "আজকে আমাকে কমপক্ষে 10টি ইমেল পাঠিয়েছে এমন লোকদের থেকে সমস্ত ইমেল খুঁজুন" এর মতো একটি সম্পর্কযুক্ত প্রশ্ন পাঠানোর কোনও উপায় নেই৷
  • প্রোপার্টিগুলির সেট যা প্রশ্নগুলি সম্পর্কে পূর্বাভাস দিতে পারে খুব সীমিত; বেশীরভাগ কোয়েরি হল সম্পূর্ণ টেক্সট সার্চ কোয়েরি।
  • ফলাফল ক্রম বাস্তবায়ন পর্যন্ত.
  • প্রোটোকল স্বাভাবিকভাবেই এক্সটেনসিবল। আপনি যদি আপনার পরিষেবাতে অতিরিক্ত ভবিষ্যদ্বাণী বা বাছাই প্রকাশ করতে চান তবে আপনি নতুন পরামিতিগুলির প্রবর্তনের মাধ্যমে এটি সহজেই করতে পারেন।

ক্যোয়ারী অনুরোধ

একটি ক্লায়েন্ট একটি HTTP GET অনুরোধ জারি করে একটি Google ডেটা পরিষেবাকে জিজ্ঞাসা করে৷ ক্যোয়ারী ইউআরআই রিসোর্সের ইউআরআই (এটম-এ FeedURI বলা হয়) এর পরে কোয়েরি প্যারামিটার থাকে। বেশিরভাগ ক্যোয়ারী প্যারামিটার ঐতিহ্যগত ?name=value[&...] URL প্যারামিটার হিসাবে উপস্থাপিত হয়। বিভাগ পরামিতি ভিন্নভাবে পরিচালনা করা হয়; নিচে দেখ.

উদাহরণস্বরূপ, যদি FeedURI হয় http://www.example.com/feeds/jo , তাহলে আপনি নিম্নলিখিত URI সহ একটি প্রশ্ন পাঠাতে পারেন:

http://www.example.com/feeds/jo?q=Darcy&updated-min=2005-04-19T15:30:00Z

Google ডেটা পরিষেবাগুলি HTTP শর্তাধীন GET সমর্থন করে৷ তারা প্রত্যাবর্তিত ফিড বা এন্ট্রিতে <atom:updated> উপাদানের মানের উপর ভিত্তি করে সর্বশেষ-সংশোধিত প্রতিক্রিয়া শিরোনাম সেট করে। একজন ক্লায়েন্ট যদি পরিবর্তিত না হয়ে থাকে তাহলে বিষয়বস্তু পুনরায় পুনরুদ্ধার করা এড়াতে যদি-পরিবর্তিত-Since অনুরোধ শিরোনামের মান হিসাবে এই মানটিকে ফেরত পাঠাতে পারে। If-Modified-সময় থেকে যদি বিষয়বস্তু পরিবর্তিত না হয়, তাহলে Google ডেটা পরিষেবা একটি 304 (সংশোধিত নয়) HTTP প্রতিক্রিয়া প্রদান করে।

একটি Google ডেটা পরিষেবা অবশ্যই বিভাগ প্রশ্ন এবং alt প্রশ্ন সমর্থন করবে; অন্যান্য পরামিতিগুলির জন্য সমর্থন ঐচ্ছিক। একটি প্রদত্ত পরিষেবা দ্বারা বোঝা যায় না এমন একটি স্ট্যান্ডার্ড প্যারামিটার পাস করার ফলে একটি 403 Forbidden প্রতিক্রিয়া হয়৷ একটি অসমর্থিত ননস্ট্যান্ডার্ড প্যারামিটার পাস করার ফলে একটি 400 Bad Request প্রতিক্রিয়া দেখা যায়। অন্যান্য স্ট্যাটাস কোডের তথ্যের জন্য, এই ডকুমেন্টের HTTP স্ট্যাটাস কোড বিভাগ দেখুন।

স্ট্যান্ডার্ড ক্যোয়ারী প্যারামিটারগুলি নিম্নলিখিত টেবিলে সংক্ষিপ্ত করা হয়েছে। সমস্ত প্যারামিটার মান URL এনকোড করা প্রয়োজন.

প্যারামিটার অর্থ মন্তব্য
q ফুল-টেক্সট ক্যোয়ারী স্ট্রিং
  • একটি ক্যোয়ারী তৈরি করার সময়, q=term1 term2 term3 ফর্মে, স্পেস দ্বারা পৃথক অনুসন্ধান পদগুলি তালিকাভুক্ত করুন। (সমস্ত ক্যোয়ারী প্যারামিটার মানগুলির মতো, স্পেসগুলি অবশ্যই URL এনকোড করা উচিত।) Google ডেটা পরিষেবা সমস্ত অনুসন্ধান শব্দের সাথে মেলে এমন সমস্ত এন্ট্রি প্রদান করে (যেমন পদগুলির মধ্যে AND ব্যবহার করা)৷ Google-এর ওয়েব অনুসন্ধানের মতো, একটি Google ডেটা পরিষেবা সম্পূর্ণ শব্দগুলিতে অনুসন্ধান করে (এবং একই স্টেম সহ সম্পর্কিত শব্দ), সাবস্ট্রিং নয়।
  • একটি সঠিক বাক্যাংশ অনুসন্ধান করতে, বাক্যাংশটিকে উদ্ধৃতি চিহ্নে আবদ্ধ করুন: q="exact phrase".
  • প্রদত্ত শব্দের সাথে মেলে এমন এন্ট্রিগুলি বাদ দিতে, q=-term ফর্মটি ব্যবহার করুন।
  • অনুসন্ধানটি কেস-সংবেদনশীল।
  • উদাহরণ: "Elizabeth Bennet" এবং "Darcy" শব্দটি আছে কিন্তু "Austen" শব্দটি নেই এমন সমস্ত এন্ট্রি অনুসন্ধান করতে, নিম্নলিখিত প্রশ্নটি ব্যবহার করুন: ?q="Elizabeth Bennet" Darcy -Austen
/-/ category বিভাগ ফিল্টার
  • প্রতিটি বিভাগকে এমনভাবে তালিকাভুক্ত করুন যেন এটি সম্পদের URI-এর অংশ, ফর্মে /categoryname/ —এটি স্বাভাবিক name=value ফর্মের একটি ব্যতিক্রম।
  • অন্য কোনো ক্যোয়ারী প্যারামিটারের আগে সমস্ত বিভাগ তালিকাভুক্ত করুন।
  • এটি একটি বিভাগ তা স্পষ্ট করতে /-/ দিয়ে প্রথম বিভাগের আগে। উদাহরণস্বরূপ, যদি জো-এর ফিডে ফ্রিটজ সম্পর্কে এন্ট্রিগুলির জন্য একটি বিভাগ থাকে, তাহলে আপনি এই ধরনের এন্ট্রিগুলির জন্য অনুরোধ করতে পারেন: http://www.example.com/feeds/jo/-/Fritz । এটি বাস্তবায়নকে রিসোর্স ইউআরআই থেকে বিভাগ-প্রেডিকেটেড ক্যোয়ারী ইউআরআইকে আলাদা করার অনুমতি দেয়।
  • আপনি স্ল্যাশ দ্বারা বিভক্ত একাধিক বিভাগ পরামিতি তালিকাভুক্ত করে একাধিক বিভাগে প্রশ্ন করতে পারেন। Google ডেটা পরিষেবা সমস্ত বিভাগের সাথে মেলে এমন সমস্ত এন্ট্রি ফেরত দেয় (যেমন AND শর্তগুলির মধ্যে ব্যবহার করা)৷ যেমন: http://www.example.com/feeds/jo/-/Fritz/Laurie এন্ট্রি ফেরত দেয় যা উভয় বিভাগের সাথে মেলে।
  • পদগুলির মধ্যে একটি OR করতে, একটি পাইপ অক্ষর ( | ), ইউআরএল-এনকোড করা %7C হিসাবে ব্যবহার করুন। যেমন: http://www.example.com/feeds/jo/-/Fritz%7CLaurie যেকোনও বিভাগের সাথে মেলে এমন এন্ট্রি ফেরত দেয়।
  • একটি এন্ট্রি একটি নির্দিষ্ট বিভাগের সাথে মেলে যদি এন্ট্রিটি এমন একটি বিভাগে হয় যার একটি মিলিত শব্দ বা লেবেল রয়েছে, যেমনটি এটম স্পেসিফিকেশনে সংজ্ঞায়িত করা হয়েছে। (মোটামুটিভাবে, "টার্ম" হল অভ্যন্তরীণ স্ট্রিং যা সফ্টওয়্যার দ্বারা বিভাগ সনাক্ত করতে ব্যবহৃত হয়, যখন "লেবেল" হল একটি ব্যবহারকারীর ইন্টারফেসে ব্যবহারকারীর কাছে উপস্থাপিত মানব-পঠনযোগ্য স্ট্রিং।)
  • প্রদত্ত বিভাগের সাথে মেলে এমন এন্ট্রিগুলি বাদ দিতে, /-categoryname/ ফর্মটি ব্যবহার করুন।
  • একটি স্কিম আছে এমন একটি বিভাগের জন্য অনুসন্ধান করতে — যেমন <category scheme="urn:google.com" term="public"/> —আপনাকে অবশ্যই বিভাগের নামের আগে স্কিমটি কোঁকড়ানো বন্ধনীতে রাখতে হবে। উদাহরণস্বরূপ: /{urn:google.com}public । যদি স্কিমটিতে একটি স্ল্যাশ অক্ষর ( / ) থাকে তবে এটি %2F হিসাবে URL-এনকোড করা উচিত। কোনো স্কিম নেই এমন একটি বিভাগের সাথে মেলে, কোঁকড়া ধনুর্বন্ধনীর একটি খালি জোড়া ব্যবহার করুন। আপনি যদি কোঁকড়া ধনুর্বন্ধনী নির্দিষ্ট না করেন, তাহলে যেকোনো স্কিমের বিভাগগুলি মিলবে।
  • উপরের বৈশিষ্ট্যগুলি একত্রিত করা যেতে পারে। যেমন: /A%7C-{urn:google.com}B/-C মানে (A OR (NOT B)) AND (NOT C)
category বিভাগ ফিল্টার
  • একটি বিভাগ ফিল্টার সঞ্চালনের একটি বিকল্প উপায়. দুটি পদ্ধতি সমতুল্য।
  • পদগুলির মধ্যে একটি OR করতে, একটি পাইপ অক্ষর (|), ইউআরএল-এনকোড করা %7C হিসাবে ব্যবহার করুন। উদাহরণ স্বরূপ: http://www.example.com/feeds?category=Fritz%7CLaurie যেকোনও বিভাগের সাথে মেলে এমন এন্ট্রি প্রদান করে।
  • পদগুলির মধ্যে একটি AND করতে, একটি কমা অক্ষর (,) ব্যবহার করুন। উদাহরণ স্বরূপ: http://www.example.com/feeds?category=Fritz,Laurie এন্ট্রি ফেরত দেয় যা উভয় বিভাগের সাথে মেলে।
author এন্ট্রি লেখক
  • পরিষেবাটি এন্ট্রি প্রদান করে যেখানে লেখকের নাম এবং/অথবা ইমেল ঠিকানা আপনার ক্যোয়ারী স্ট্রিং এর সাথে মেলে।
alt বিকল্প প্রতিনিধিত্বের ধরন
  • আপনি একটি alt প্যারামিটার নির্দিষ্ট না করলে, পরিষেবাটি একটি অ্যাটম ফিড প্রদান করে। এটি alt=atom এর সমতুল্য।
  • alt=rss একটি RSS 2.0 ফলাফল ফিড প্রদান করে।
  • alt=json ফিডের একটি JSON উপস্থাপনা প্রদান করে। অধিক তথ্য
  • alt=json-in-script একটি প্রতিক্রিয়ার অনুরোধ করে যা JSON কে একটি স্ক্রিপ্ট ট্যাগে মোড়ানো হয়। অধিক তথ্য
updated-min , updated-max এন্ট্রি আপডেট তারিখে সীমানা
  • RFC 3339 টাইমস্ট্যাম্প বিন্যাস ব্যবহার করুন। উদাহরণস্বরূপ: 2005-08-09T10:57:00-08:00
  • নীচের সীমাটি অন্তর্ভুক্ত, যেখানে উপরের সীমাটি একচেটিয়া।
published-min , published-max এন্ট্রি প্রকাশনার তারিখে সীমানা
  • RFC 3339 টাইমস্ট্যাম্প বিন্যাস ব্যবহার করুন। উদাহরণস্বরূপ: 2005-08-09T10:57:00-08:00
  • নীচের সীমাটি অন্তর্ভুক্ত, যেখানে উপরের সীমাটি একচেটিয়া।
start-index প্রথম ফলাফলের 1-ভিত্তিক সূচক পুনরুদ্ধার করা হবে
  • মনে রাখবেন এটি একটি সাধারণ কার্সারিং প্রক্রিয়া নয়। আপনি যদি প্রথমে ?start-index=1&max-results=10 দিয়ে একটি ক্যোয়ারী পাঠান এবং তারপর ?start-index=11&max-results=10 দিয়ে অন্য একটি কোয়েরি পাঠান, তাহলে পরিষেবাটি গ্যারান্টি দিতে পারে না যে ফলাফলগুলি ?start-index=1&max-results=20 এর সমতুল্য ?start-index=1&max-results=20 , কারণ দুটি প্রশ্নের মধ্যে সন্নিবেশ এবং মুছে ফেলা হতে পারে।
max-results সর্বাধিক সংখ্যক ফলাফল পুনরুদ্ধার করা হবে ডিফল্ট max-results মান আছে এমন যেকোনো পরিষেবার জন্য (ডিফল্ট ফিডের আকার সীমিত করার জন্য), আপনি সম্পূর্ণ ফিড পেতে চাইলে আপনি একটি খুব বড় সংখ্যা নির্দিষ্ট করতে পারেন।
এন্ট্রিআইডি একটি নির্দিষ্ট এন্ট্রির আইডি পুনরুদ্ধার করতে হবে
  • আপনি যদি একটি এন্ট্রি আইডি নির্দিষ্ট করেন, আপনি অন্য কোনো পরামিতি নির্দিষ্ট করতে পারবেন না।
  • এন্ট্রি আইডির ফর্ম Google ডেটা পরিষেবা দ্বারা নির্ধারিত হয়।
  • অন্যান্য ক্যোয়ারী প্যারামিটারের মত নয়, এন্ট্রি আইডি URI-এর অংশ হিসেবে নির্দিষ্ট করা হয়, একটি name=value pair হিসেবে নয়।
  • উদাহরণ: http://www.example.com/feeds/jo/entry1

বিষয়শ্রেণীর প্রশ্ন

আমরা বিভাগ প্রশ্নের জন্য একটি সামান্য অস্বাভাবিক বিন্যাস নির্দিষ্ট করার সিদ্ধান্ত নিয়েছে. নিম্নলিখিত মত একটি প্রশ্নের পরিবর্তে:

http://example.com/jo?category=Fritz&category=2006

আমরা ব্যাবহার করি:

http://example.com/jo/-/Fritz/2006

এই পদ্ধতিটি ক্যোয়ারী প্যারামিটার ব্যবহার না করে একটি সংস্থান সনাক্ত করে এবং এটি ক্লিনার ইউআরআই তৈরি করে। আমরা বিভাগগুলির জন্য এই পদ্ধতিটি বেছে নিয়েছি কারণ আমরা মনে করি যে বিভাগ প্রশ্নগুলি সবচেয়ে সাধারণ প্রশ্ন হবে৷

এই পদ্ধতির অসুবিধা হল যে আমরা আপনাকে /-/ ক্যাটাগরির প্রশ্নে ব্যবহার করতে চাই, যাতে Google ডেটা পরিষেবাগুলি অন্যান্য রিসোর্স ইউআরআই, যেমন http://example.com/jo/MyPost/comments থেকে বিভাগ প্রশ্নগুলিকে আলাদা করতে পারে।

প্রশ্ন উত্তর

অনুরোধের পরামিতিগুলির উপর নির্ভর করে প্রশ্নগুলি একটি এটম ফিড, একটি এটম এন্ট্রি বা একটি RSS ফিড প্রদান করে।

ক্যোয়ারী ফলাফলে সরাসরি <feed> উপাদান বা <channel> উপাদানের অধীনে নিম্নলিখিত OpenSearch উপাদান থাকে (ফলাফল Atom বা RSS কিনা তার উপর নির্ভর করে):

openSearch:totalResults
প্রশ্নের জন্য সার্চ ফলাফলের মোট সংখ্যা (অগত্যা সব ফলাফল ফিডে উপস্থিত থাকে না)।
openSearch:startIndex
প্রথম ফলাফলের 1-ভিত্তিক সূচক।
openSearch:itemsPerPage
একটি পৃষ্ঠায় প্রদর্শিত আইটেমের সর্বাধিক সংখ্যা৷ এটি ক্লায়েন্টদের পরবর্তী পৃষ্ঠাগুলির যেকোনো সেটে সরাসরি লিঙ্ক তৈরি করতে দেয়। যাইহোক, এই নম্বরটি ব্যবহার করার ক্ষেত্রে সম্ভাব্য ত্রুটির জন্য, ক্যোয়ারী অনুরোধ বিভাগে টেবিলে start-index সংক্রান্ত নোটটি দেখুন।

অ্যাটম প্রতিক্রিয়া ফিড এবং এন্ট্রিতে নিম্নলিখিত অ্যাটম এবং Google ডেটা উপাদানগুলির মধ্যে যেকোনও অন্তর্ভুক্ত থাকতে পারে (পাশাপাশি অ্যাটম স্পেসিফিকেশনে তালিকাভুক্ত অন্যান্য):

<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="..."/>
URI নির্দিষ্ট করে যেখানে সম্পূর্ণ অ্যাটম ফিড পুনরুদ্ধার করা যেতে পারে।
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="..."/>
অ্যাটম ফিডের পোস্টইউআরআই নির্দিষ্ট করে (যেখানে নতুন এন্ট্রি পোস্ট করা যেতে পারে)।
<link rel="self" type="..." href="..."/>
এই সম্পদের URI ধারণ করে। type অ্যাট্রিবিউটের মান অনুরোধ করা ফরম্যাটের উপর নির্ভর করে। অন্তর্বর্তী সময়ে কোনো ডেটা পরিবর্তন না হলে, এই URI-তে আরেকটি GET পাঠানো একই প্রতিক্রিয়া প্রদান করে।
<link rel="previous" type="application/atom+xml" href="..."/>
এই ক্যোয়ারী ফলাফল সেটের পূর্ববর্তী খণ্ডের URI নির্দিষ্ট করে, যদি এটি খণ্ড করা হয়।
<link rel="next" type="application/atom+xml" href="..."/>
এই ক্যোয়ারী ফলাফল সেটের পরবর্তী অংশের URI নির্দিষ্ট করে, যদি এটি খণ্ড করা হয়।
<link rel="edit" type="application/atom+xml" href="..."/>
এটম এন্ট্রির EditURI নির্দিষ্ট করে (যেখানে আপনি একটি আপডেট এন্ট্রি পাঠান)।

একটি অনুসন্ধান প্রশ্নের জবাবে এখানে একটি নমুনা প্রতিক্রিয়া বডি রয়েছে:

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:atom="http://www.w3.org/2005/Atom"
        xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">
  <id>http://www.example.com/feed/1234.1/posts/full</id> 
  <updated>2005-09-16T00:42:06Z</updated> 
  <title type="text">Books and Romance with Jo and Liz</title> 
  <link rel="alternate" type="text/html" href="http://www.example.net/"/> 
  <link rel="http://schemas.google.com/g/2005#feed"
    type="application/atom+xml"
    href="http://www.example.com/feed/1234.1/posts/full"/> 
  <link rel="http://schemas.google.com/g/2005#post"
    type="application/atom+xml"
    href="http://www.example.com/feed/1234.1/posts/full"/> 
  <link rel="self" type="application/atom+xml"
    href="http://www.example.com/feed/1234.1/posts/full"/> 
  <author>
    <name>Elizabeth Bennet</name> 
    <email>liz@gmail.com</email> 
  </author>
  <generator version="1.0"
    uri="http://www.example.com">Example Generator Engine</generator> 
  <openSearch:totalResults>2</openSearch:totalResults> 
  <openSearch:startIndex>0</openSearch:startIndex> 
  <entry>
    <id>http://www.example.com/feed/1234.1/posts/full/4521614025009481151</id> 
    <published>2005-01-09T08:00:00Z</published> 
    <updated>2005-01-09T08:00:00Z</updated> 
    <category scheme="http://www.example.com/type" term="blog.post"/> 
    <title type="text">This is the title of entry 1009</title> 
    <content type="xhtml">
      <div
        xmlns="http://www.w3.org/1999/xhtml">This is the entry body of entry 1009</div> 
    </content>
    <link rel="alternate" type="text/html"
      href="http://www.example.com/posturl"/> 
    <link rel="edit" type="application/atom+xml"
      href="http://www.example.com/feed/1234.1/posts/full/4521614025009481151"/> 
    <author>
      <name>Elizabeth Bennet</name> 
      <email>liz@gmail.com</email> 
    </author>
  </entry>
  <entry>
    <id>http://www.example.com/feed/1234.1/posts/full/3067545004648931569</id> 
    <published>2005-01-07T08:00:00Z</published> 
    <updated>2005-01-07T08:02:00Z</updated> 
    <category scheme="http://www.example.com/type" term="blog.post"/> 
    <title type="text">This is the title of entry 1007</title> 
    <content type="xhtml">
      <div
        xmlns="http://www.w3.org/1999/xhtml">This is the entry body of entry 1007</div> 
    </content>
    <link rel="alternate" type="text/html"
      href="http://www.example.com/posturl"/> 
    <link rel="edit" type="application/atom+xml"
      href="http://www.example.com/feed/1234.1/posts/full/3067545004648931569"/> 
    <author>
      <name>Elizabeth Bennet</name> 
      <email>liz@gmail.com</email> 
    </author>
  </entry>
</feed>

যদি অনুরোধ করা ফিডটি অ্যাটম ফর্ম্যাটে হয়, যদি কোনও ক্যোয়ারী প্যারামিটার নির্দিষ্ট করা না থাকে এবং ফলাফলে সমস্ত এন্ট্রি না থাকলে, নিম্নলিখিত উপাদানটি শীর্ষ-স্তরের ফিডে ঢোকানো হয়: <link rel="next" type="application/atom+xml" href="..."/> এটি এন্ট্রিগুলির পরবর্তী সেট ধারণকারী একটি ফিডকে নির্দেশ করে। পরবর্তী সেটগুলিতে একটি অনুরূপ <link rel="previous" type="application/atom+xml" href="..."/> উপাদান রয়েছে৷ পরবর্তী সমস্ত লিঙ্ক অনুসরণ করে, একজন ক্লায়েন্ট একটি ফিড থেকে সমস্ত এন্ট্রি পুনরুদ্ধার করতে পারে।

HTTP স্থিতি কোড

নিম্নলিখিত সারণীটি বর্ণনা করে যে Google ডেটা পরিষেবাগুলির প্রসঙ্গে বিভিন্ন HTTP স্ট্যাটাস কোডগুলি কী বোঝায়৷

কোড ব্যাখ্যা
200 ঠিক আছে কোন ত্রুটি নেই।
201 তৈরি করা হয়েছে একটি সম্পদ তৈরি সফল হয়েছে.
304 সংশোধিত নয় অনুরোধের If-Modified-Since হেডারে নির্দিষ্ট সময় থেকে সংস্থানটি পরিবর্তিত হয়নি।
400 খারাপ অনুরোধ অবৈধ অনুরোধ URI বা শিরোনাম, অথবা অসমর্থিত ননস্ট্যান্ডার্ড প্যারামিটার।
401 অননুমোদিত অনুমোদন আবশ্যক.
403 নিষিদ্ধ অসমর্থিত স্ট্যান্ডার্ড প্যারামিটার, বা প্রমাণীকরণ বা অনুমোদন ব্যর্থ হয়েছে।
404 পাওয়া যায়নি সম্পদ (যেমন একটি ফিড বা এন্ট্রি) পাওয়া যায়নি.
409 দ্বন্দ্ব নির্দিষ্ট সংস্করণ নম্বর সম্পদের সর্বশেষ সংস্করণ নম্বরের সাথে মেলে না৷
500 অভ্যন্তরীণ সার্ভার সমস্যা অভ্যন্তরীণ ত্রুটি. এটি হল ডিফল্ট কোড যা সমস্ত অচেনা ত্রুটির জন্য ব্যবহৃত হয়।

আশাবাদী সঙ্গতি (সংস্করণ)

কখনও কখনও এটি নিশ্চিত করা গুরুত্বপূর্ণ যে একাধিক ক্লায়েন্ট অসাবধানতাবশত একে অপরের পরিবর্তনগুলি ওভাররাইট করে না। এটি সবচেয়ে সহজে নিশ্চিত করা হয় যে একটি এন্ট্রির বর্তমান সংস্করণ যা একটি ক্লায়েন্ট পরিবর্তন করছে সেটি সেই সংস্করণের মতই যা ক্লায়েন্ট তার পরিবর্তনগুলিকে ভিত্তি করে রেখেছে। যদি একটি দ্বিতীয় ক্লায়েন্ট প্রথম ক্লায়েন্ট করার আগে একটি আপডেট করে, তাহলে প্রথম ক্লায়েন্টের আপডেট অস্বীকার করা হয়, কারণ প্রথম ক্লায়েন্ট আর তার পরিবর্তনগুলি সর্বশেষ সংস্করণে ভিত্তি করে না।

Google ডেটা ফিডগুলিতে যা সংস্করণ সমর্থন করে, আমরা প্রতিটি এন্ট্রির EditURI-এ একটি সংস্করণ আইডি যুক্ত করে এই শব্দার্থবিদ্যা অর্জন করি। উল্লেখ্য যে শুধুমাত্র EditURI প্রভাবিত হয়, এন্ট্রি আইডি নয়। এই স্কিমে, প্রতিটি আপডেট এন্ট্রির EditURI পরিবর্তন করে, এইভাবে মূল সংস্করণের উপর ভিত্তি করে পরবর্তী আপডেটগুলি ব্যর্থ হওয়ার গ্যারান্টি দেয়। মুছে ফেলা, অবশ্যই, এই বৈশিষ্ট্য সম্পর্কিত আপডেটের সাথে অভিন্ন; যদি আপনি একটি পুরানো সংস্করণ নম্বর দিয়ে একটি মুছে পাঠান, মুছে ফেলতে ব্যর্থ হয়.

সমস্ত Google ডেটা ফিড আশাবাদী সমঝোতা সমর্থন করে না। এটিকে সমর্থন করে এমন একটি ফিডে, সার্ভার যদি PUT বা DELETE-এ সংস্করণের দ্বন্দ্ব শনাক্ত করে, সার্ভারটি 409 Conflict এর সাথে প্রতিক্রিয়া জানায়। প্রতিক্রিয়ার মূল অংশে এন্ট্রির বর্তমান অবস্থা রয়েছে (একটি এটম এন্ট্রি নথি)। 409 প্রতিক্রিয়া থেকে EditURI ব্যবহার করে ক্লায়েন্টকে বিরোধ সমাধান করার এবং অনুরোধটি পুনরায় জমা দেওয়ার পরামর্শ দেওয়া হচ্ছে।

অনুপ্রেরণা এবং নকশা নোট

আশাবাদী সমঝোতার এই পদ্ধতিটি আমাদেরকে সংস্করণ আইডিগুলির জন্য নতুন মার্কআপের প্রয়োজন ছাড়াই আমরা যে শব্দার্থবিদ্যা চাই তা বাস্তবায়ন করতে দেয়, যা Google ডেটার প্রতিক্রিয়াগুলিকে নন-Google ডেটা অ্যাটম এন্ডপয়েন্টগুলির সাথে সামঞ্জস্যপূর্ণ করে তোলে।

সংস্করণ আইডি নির্দিষ্ট করার পরিবর্তে, আমরা প্রতিটি এন্ট্রিতে আপডেট টাইমস্ট্যাম্প দেখতে পছন্দ করতে পারতাম ( /atom:entry/atom:updated )। যাইহোক, আপডেট টাইমস্ট্যাম্প ব্যবহারে দুটি সমস্যা রয়েছে:

  • এটি শুধুমাত্র আপডেটের জন্য কাজ করে এবং মুছে ফেলার জন্য নয়।
  • এটি অ্যাপ্লিকেশনগুলিকে সংস্করণ আইডি হিসাবে তারিখ/সময়ের মানগুলি ব্যবহার করতে বাধ্য করে, যা অনেকগুলি বিদ্যমান ডেটা স্টোরের উপরে Google ডেটাকে পুনরুদ্ধার করা কঠিন করে তুলবে৷

প্রমাণীকরণ

যখন একটি ক্লায়েন্ট একটি পরিষেবা অ্যাক্সেস করার চেষ্টা করে, তখন ব্যবহারকারীর প্রশ্নে ক্রিয়া সম্পাদনের কর্তৃত্ব রয়েছে তা প্রদর্শন করতে পরিষেবাটিতে ব্যবহারকারীর শংসাপত্রগুলি প্রদান করতে হতে পারে৷

প্রমাণীকরণের জন্য ক্লায়েন্টের যে পদ্ধতিটি ব্যবহার করা উচিত তা নির্ভর করে ক্লায়েন্টের ধরণের উপর:

ClientLogin সিস্টেমে, ডেস্কটপ ক্লায়েন্ট ব্যবহারকারীকে তাদের শংসাপত্রের জন্য জিজ্ঞাসা করে, এবং তারপর সেই শংসাপত্রগুলি Google প্রমাণীকরণ সিস্টেমে পাঠায়।

যদি প্রমাণীকরণ সফল হয়, তাহলে প্রমাণীকরণ সিস্টেম একটি টোকেন ফেরত দেয় যা ক্লায়েন্ট পরবর্তীতে ব্যবহার করে (একটি HTTP অনুমোদন শিরোনামে) যখন এটি Google ডেটা অনুরোধ পাঠায়।

যদি প্রমাণীকরণ ব্যর্থ হয়, তাহলে সার্ভার একটি 403 নিষিদ্ধ স্ট্যাটাস কোড প্রদান করে, সাথে একটি WWW-প্রমাণিত শিরোনাম যা প্রমাণীকরণের জন্য প্রযোজ্য একটি চ্যালেঞ্জ রয়েছে।

AuthSub সিস্টেম একইভাবে কাজ করে, ব্যবহারকারীকে তাদের শংসাপত্রের জন্য জিজ্ঞাসা করার পরিবর্তে, এটি ব্যবহারকারীকে একটি Google পরিষেবার সাথে সংযুক্ত করে যা শংসাপত্রের অনুরোধ করে৷ পরিষেবাটি তারপর একটি টোকেন ফেরত দেয় যা ওয়েব অ্যাপ্লিকেশন ব্যবহার করতে পারে; এই পদ্ধতির সুবিধা হল যে Google (ওয়েব ফ্রন্ট এন্ডের পরিবর্তে) নিরাপদে ব্যবহারকারীর শংসাপত্রগুলি পরিচালনা করে এবং সংরক্ষণ করে।

এই প্রমাণীকরণ সিস্টেমগুলি সম্পর্কে বিশদ বিবরণের জন্য, Google ডেটা প্রমাণীকরণ ওভারভিউ বা Google অ্যাকাউন্ট প্রমাণীকরণ ডকুমেন্টেশন দেখুন৷

অধিবেশন অবস্থা

অনেক ব্যবসায়িক লজিক বাস্তবায়নের জন্য সেশন স্টিকিনেস প্রয়োজন—ব্যবহারকারীর সেশনের অবস্থার উপর নজর রাখা।

Google দুটি উপায়ে সেশনের অবস্থা ট্র্যাক করে: কুকিজ ব্যবহার করে, এবং একটি টোকেন ব্যবহার করে যা একটি ক্যোয়ারী প্যারামিটার হিসাবে পাঠানো যেতে পারে। উভয় পদ্ধতি একই প্রভাব অর্জন করে। আমরা সুপারিশ করি যে ক্লায়েন্টরা এই সেশন-স্টেট ট্র্যাকিং পদ্ধতিগুলির একটিকে সমর্থন করে (হয় একটি যথেষ্ট)। যদি কোনও ক্লায়েন্ট এই পদ্ধতিগুলির কোনওটিই সমর্থন না করে, তবে সেই ক্লায়েন্টটি এখনও Google ডেটা পরিষেবাগুলির সাথে কাজ করবে, তবে এই পদ্ধতিগুলি সমর্থন করে এমন ক্লায়েন্টদের তুলনায় কর্মক্ষমতা ক্ষতিগ্রস্ত হতে পারে৷ বিশেষভাবে, যদি কোনো ক্লায়েন্ট এই পদ্ধতিগুলিকে সমর্থন না করে, তাহলে প্রতিটি অনুরোধের ফলাফল একটি পুনঃনির্দেশে পরিণত হয়, এবং সেইজন্য প্রতিটি অনুরোধ (এবং কোনো সংশ্লিষ্ট ডেটা) সার্ভারে দুবার পাঠানো হয়, যা ক্লায়েন্ট এবং সার্ভার উভয়ের কর্মক্ষমতাকে প্রভাবিত করে।

Google ক্লায়েন্ট লাইব্রেরিগুলি আপনার জন্য সেশন স্টেট পরিচালনা করে, তাই আপনি যদি আমাদের লাইব্রেরিগুলি ব্যবহার করেন, তাহলে আপনাকে সেশন স্টেট সমর্থন পেতে কিছু করতে হবে না৷

অতিরিক্ত সম্পদ

আপনি নিম্নলিখিত তৃতীয় পক্ষের নথিগুলি দরকারী খুঁজে পেতে পারেন:

উপরে ফিরে যাও