এই ডকুমেন্টটি 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 |
লেখক ফিড | (কিছু ক্ষেত্রে প্রয়োজনীয়; পরমাণুর স্পেসিফিকেশন দেখুন।) | /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 |
এন্ট্রি সারাংশ | (কিছু ক্ষেত্রে প্রয়োজনীয়; পরমাণুর স্পেসিফিকেশন দেখুন।) | /rss/channel/item/atom:summary |
এন্ট্রি বিষয়বস্তু | (যদি কোন বিষয়বস্তুর উপাদান না থাকে, তাহলে এন্ট্রিতে অন্তত একটি | /rss/channel/item/description |
এন্ট্রি লেখক | (কিছু ক্ষেত্রে প্রয়োজনীয়; পরমাণুর স্পেসিফিকেশন দেখুন।) | /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 | ফুল-টেক্সট ক্যোয়ারী স্ট্রিং |
|
/-/ category | বিভাগ ফিল্টার |
|
category | বিভাগ ফিল্টার |
|
author | এন্ট্রি লেখক |
|
alt | বিকল্প প্রতিনিধিত্বের ধরন |
|
updated-min , updated-max | এন্ট্রি আপডেট তারিখে সীমানা |
|
published-min , published-max | এন্ট্রি প্রকাশনার তারিখে সীমানা |
|
start-index | প্রথম ফলাফলের 1-ভিত্তিক সূচক পুনরুদ্ধার করা হবে |
|
max-results | সর্বাধিক সংখ্যক ফলাফল পুনরুদ্ধার করা হবে | ডিফল্ট max-results মান আছে এমন যেকোনো পরিষেবার জন্য (ডিফল্ট ফিডের আকার সীমিত করার জন্য), আপনি সম্পূর্ণ ফিড পেতে চাইলে আপনি একটি খুব বড় সংখ্যা নির্দিষ্ট করতে পারেন। |
এন্ট্রিআইডি | একটি নির্দিষ্ট এন্ট্রির আইডি পুনরুদ্ধার করতে হবে |
|
বিষয়শ্রেণীর প্রশ্ন
আমরা বিভাগ প্রশ্নের জন্য একটি সামান্য অস্বাভাবিক বিন্যাস নির্দিষ্ট করার সিদ্ধান্ত নিয়েছে. নিম্নলিখিত মত একটি প্রশ্নের পরিবর্তে:
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 ডেটাকে পুনরুদ্ধার করা কঠিন করে তুলবে৷
প্রমাণীকরণ
যখন একটি ক্লায়েন্ট একটি পরিষেবা অ্যাক্সেস করার চেষ্টা করে, তখন ব্যবহারকারীর প্রশ্নে ক্রিয়া সম্পাদনের কর্তৃত্ব রয়েছে তা প্রদর্শন করতে পরিষেবাটিতে ব্যবহারকারীর শংসাপত্রগুলি প্রদান করতে হতে পারে৷
প্রমাণীকরণের জন্য ক্লায়েন্টের যে পদ্ধতিটি ব্যবহার করা উচিত তা নির্ভর করে ক্লায়েন্টের ধরণের উপর:
- একটি ডেস্কটপ অ্যাপ্লিকেশনের একটি Google-নির্দিষ্ট প্রমাণীকরণ সিস্টেম ব্যবহার করা উচিত যার নাম অ্যাকাউন্ট প্রমাণীকরণ ইনস্টল করা অ্যাপ্লিকেশনগুলির জন্য ("ক্লায়েন্টলগইন" নামেও পরিচিত)। (ওয়েব-ভিত্তিক ক্লায়েন্টদের এই সিস্টেমটি ব্যবহার করা উচিত নয়।)
- একটি ওয়েব-ভিত্তিক ক্লায়েন্ট, যেমন একটি Google ডেটা পরিষেবার তৃতীয় পক্ষের ফ্রন্ট এন্ড, ওয়েব-ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য অ্যাকাউন্ট প্রমাণীকরণ প্রক্সি নামে একটি Google-নির্দিষ্ট প্রমাণীকরণ সিস্টেম ব্যবহার করা উচিত ("AuthSub" নামেও পরিচিত)।
ClientLogin সিস্টেমে, ডেস্কটপ ক্লায়েন্ট ব্যবহারকারীকে তাদের শংসাপত্রের জন্য জিজ্ঞাসা করে, এবং তারপর সেই শংসাপত্রগুলি Google প্রমাণীকরণ সিস্টেমে পাঠায়।
যদি প্রমাণীকরণ সফল হয়, তাহলে প্রমাণীকরণ সিস্টেম একটি টোকেন ফেরত দেয় যা ক্লায়েন্ট পরবর্তীতে ব্যবহার করে (একটি HTTP অনুমোদন শিরোনামে) যখন এটি Google ডেটা অনুরোধ পাঠায়।
যদি প্রমাণীকরণ ব্যর্থ হয়, তাহলে সার্ভার একটি 403 নিষিদ্ধ স্ট্যাটাস কোড প্রদান করে, সাথে একটি WWW-প্রমাণিত শিরোনাম যা প্রমাণীকরণের জন্য প্রযোজ্য একটি চ্যালেঞ্জ রয়েছে।
AuthSub সিস্টেম একইভাবে কাজ করে, ব্যবহারকারীকে তাদের শংসাপত্রের জন্য জিজ্ঞাসা করার পরিবর্তে, এটি ব্যবহারকারীকে একটি Google পরিষেবার সাথে সংযুক্ত করে যা শংসাপত্রের অনুরোধ করে৷ পরিষেবাটি তারপর একটি টোকেন ফেরত দেয় যা ওয়েব অ্যাপ্লিকেশন ব্যবহার করতে পারে; এই পদ্ধতির সুবিধা হল যে Google (ওয়েব ফ্রন্ট এন্ডের পরিবর্তে) নিরাপদে ব্যবহারকারীর শংসাপত্রগুলি পরিচালনা করে এবং সংরক্ষণ করে।
এই প্রমাণীকরণ সিস্টেমগুলি সম্পর্কে বিশদ বিবরণের জন্য, Google ডেটা প্রমাণীকরণ ওভারভিউ বা Google অ্যাকাউন্ট প্রমাণীকরণ ডকুমেন্টেশন দেখুন৷
অধিবেশন অবস্থা
অনেক ব্যবসায়িক লজিক বাস্তবায়নের জন্য সেশন স্টিকিনেস প্রয়োজন—ব্যবহারকারীর সেশনের অবস্থার উপর নজর রাখা।
Google দুটি উপায়ে সেশনের অবস্থা ট্র্যাক করে: কুকিজ ব্যবহার করে, এবং একটি টোকেন ব্যবহার করে যা একটি ক্যোয়ারী প্যারামিটার হিসাবে পাঠানো যেতে পারে। উভয় পদ্ধতি একই প্রভাব অর্জন করে। আমরা সুপারিশ করি যে ক্লায়েন্টরা এই সেশন-স্টেট ট্র্যাকিং পদ্ধতিগুলির একটিকে সমর্থন করে (হয় একটি যথেষ্ট)। যদি কোনও ক্লায়েন্ট এই পদ্ধতিগুলির কোনওটিই সমর্থন না করে, তবে সেই ক্লায়েন্টটি এখনও Google ডেটা পরিষেবাগুলির সাথে কাজ করবে, তবে এই পদ্ধতিগুলি সমর্থন করে এমন ক্লায়েন্টদের তুলনায় কর্মক্ষমতা ক্ষতিগ্রস্ত হতে পারে৷ বিশেষভাবে, যদি কোনো ক্লায়েন্ট এই পদ্ধতিগুলিকে সমর্থন না করে, তাহলে প্রতিটি অনুরোধের ফলাফল একটি পুনঃনির্দেশে পরিণত হয়, এবং সেইজন্য প্রতিটি অনুরোধ (এবং কোনো সংশ্লিষ্ট ডেটা) সার্ভারে দুবার পাঠানো হয়, যা ক্লায়েন্ট এবং সার্ভার উভয়ের কর্মক্ষমতাকে প্রভাবিত করে।
Google ক্লায়েন্ট লাইব্রেরিগুলি আপনার জন্য সেশন স্টেট পরিচালনা করে, তাই আপনি যদি আমাদের লাইব্রেরিগুলি ব্যবহার করেন, তাহলে আপনাকে সেশন স্টেট সমর্থন পেতে কিছু করতে হবে না৷
অতিরিক্ত সম্পদ
আপনি নিম্নলিখিত তৃতীয় পক্ষের নথিগুলি দরকারী খুঁজে পেতে পারেন:
- পরমাণু এবং আরএসএসের তুলনা পরস্পর বিচ্ছিন্নভাবে
- আইবিএম থেকে পরমাণুর ওভারভিউ
- আরএসএস-এ ডাবলিন কোর এক্সটেনশন
- HTTP 1.1 পদ্ধতির সংজ্ঞা ;
GET
,POST
,PUT
, এবংDELETE
এর স্পেসিফিকেশন - HTTP 1.1 স্থিতি কোড সংজ্ঞা
- কিভাবে একটি REST প্রোটোকল তৈরি করবেন
- বিল্ডিং ওয়েব পরিষেবা বাকি উপায়
- XML-এর একটি প্রযুক্তিগত ভূমিকা
- উদাহরণ দ্বারা XML নেমস্পেস