API বা অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস ফাংশন এবং নিয়ম উপস্থাপন করে যা বিভিন্ন অ্যাপ্লিকেশনের মধ্যে মিথস্ক্রিয়া এবং যোগাযোগের অনুমতি দেয়। এই ইন্টারফেসগুলি অ্যাপ্লিকেশন একীকরণকে সহজতর করে, বিকাশকারীদের শক্তিশালী ডিজিটাল পণ্য তৈরি করতে সক্ষম করে।
এপিআই অনুরোধ এবং প্রতিক্রিয়ার মাধ্যমে অ্যাপ্লিকেশনগুলির মধ্যে মধ্যস্থতা করে। উদাহরণস্বরূপ, ব্যবহারকারীর বিদ্যমান টুইটার অ্যাকাউন্টের মাধ্যমে অ্যাপ্লিকেশনটিতে নিবন্ধন করা টুইটার API এর মাধ্যমে ঘটে যা বিকাশকারীরা অ্যাপে একত্রিত করেছে। অনুরোধ এবং প্রতিক্রিয়া পাঠানোর জন্য API বিভিন্ন প্রোটোকল এবং আর্কিটেকচার ব্যবহার করে:
- XML-RPC — নেটওয়ার্কগুলির মধ্যে ফাংশন বিনিময়ের অনুমতি দেয়। XML-RPC ক্লায়েন্ট থেকে সার্ভারে তথ্য স্থানান্তরের জন্য প্রতিক্রিয়া/অনুরোধ এবং HTTP প্রোটোকল বর্ণনা করতে XML ব্যবহার করে।
- JSON-RPC হল XML-এর মতো হালকা ওজনের RPC। এখানে প্রোটোকল JSON এ এনকোড করা আছে; এটি অ্যাসিঙ্ক্রোনাস প্রতিক্রিয়া সহ সার্ভারে কল গ্রহণের অনুমতি দেয়।
- SOAP — কম্পিউটার নেটওয়ার্কগুলিতে ওয়েব পরিষেবাগুলি প্রয়োগ করার সময় কাঠামোগত তথ্য বিনিময়ের জন্য একটি সাধারণ অবজেক্ট অ্যাক্সেস প্রোটোকল। SOAP অপারেটিং সিস্টেমে প্রমাণীকরণ, অনুমোদন এবং প্রক্রিয়া যোগাযোগের জন্য XML ব্যবহার করে। এটি ক্লায়েন্টদের ওয়েব পরিষেবাগুলিতে কল করতে এবং প্ল্যাটফর্ম এবং ভাষা নির্বিশেষে প্রতিক্রিয়া পেতে অনুমতি দেয়।
- REST API (প্রতিনিধি রাষ্ট্র স্থানান্তর) — স্বাধীনভাবে ক্লায়েন্ট-সার্ভার বাস্তবায়ন ব্যবহার করে একটি স্থাপত্য শৈলী। REST যোগাযোগের জন্য HTTP প্রোটোকল ব্যবহার করে।
এই পোস্টে, আমরা REST API এর উপর ফোকাস করি, এটিকে সংজ্ঞায়িত করি এবং বিশ্লেষণ করি যে এটি অন্যান্য API থেকে কীভাবে আলাদা।
REST API সংজ্ঞায়িত করা হচ্ছে
REST হল HTTP প্রোটোকলের মাধ্যমে API ডিজাইন করার জন্য একটি স্থাপত্য শৈলী। এর মূল সুবিধা হল এর মহান নমনীয়তা।
সার্ভার থেকে সরাসরি ওয়েব অ্যাপ্লিকেশন বা সাইটের ব্যবহারকারীকে ডেটা সরবরাহ করার প্রয়োজন হলে বিকাশকারীরা REST API ব্যবহার করে। REST API এর প্রধান উপাদান:
- ক্লায়েন্ট - একটি ক্লায়েন্ট বা প্রোগ্রাম ব্যবহারকারীর পক্ষ থেকে (তার ডিভাইসে) যোগাযোগ শুরু করে।
- সার্ভার — একটি সার্ভার APIs ব্যবহার করে তার ফাংশন এবং ডেটা অ্যাক্সেস হিসাবে।
- সম্পদ — সার্ভার ক্লায়েন্টের কাছে যে কোনো বিষয়বস্তু (ভিডিও, পাঠ্য, ছবি) প্রেরণ করে।
REST API কিভাবে কাজ করে
REST API HTTP অনুরোধের মাধ্যমে যোগাযোগ করে, নিম্নলিখিত ফাংশনগুলি সম্পূর্ণ করে — ডেটা তৈরি করা, পড়া, আপডেট করা এবং মুছে ফেলা। এগুলি CRUD অপারেশন নামেও পরিচিত। REST অনুরোধ করা সংস্থান সম্পর্কে তথ্য প্রদান করে এবং একটি সংস্থান দিয়ে কী করতে হবে তা বর্ণনা করতে চারটি পদ্ধতি ব্যবহার করে:
পোস্ট - একটি সংস্থান তৈরি করা;
GET — একটি সম্পদ পাওয়া;
PUT - একটি সংস্থান আপডেট করা;
DELETE — একটি সম্পদ মুছে ফেলা হচ্ছে।
সম্পদ
রিসোর্স হল REST API-তে একটি গুরুত্বপূর্ণ ধারণা, একটি তথ্য বিমূর্ততা। এটি যেকোনো তথ্য হতে পারে: নথি, ছবি, অস্থায়ী পরিষেবা।
যে কোনো মুহূর্তে রিসোর্সের অবস্থাকে রিসোর্স রিপ্রেজেন্টেশন বলা হয় যা ডেটা, মেটাডেটা বর্ণনা করে এবং হাইপারমিডিয়া লিঙ্ক থাকে যা গ্রাহকদের পরবর্তী অবস্থায় যেতে সাহায্য করে।
তথ্য ক্লায়েন্টকে বিভিন্ন ফরম্যাটে বিতরণ করা যেতে পারে: JSON, HTML, XLT, Python, বা প্লেইন টেক্সট। সবচেয়ে জনপ্রিয় এবং ব্যবহৃত একটি হল JSON কারণ এটি মানব এবং মেশিন-পাঠযোগ্য এবং ভাষা-অজ্ঞেয়বাদী।
একটি সম্পদ অ্যাক্সেস করার জন্য, একটি ক্লায়েন্ট একটি অনুরোধ করতে হবে. এটি পাওয়ার পরে, সার্ভার একটি সংস্থান সম্পর্কে এনকোড করা ডেটা সহ একটি প্রতিক্রিয়া তৈরি করবে।
অনুরোধের কাঠামোতে চারটি প্রধান উপাদান রয়েছে: HTTP পদ্ধতি (আমরা আগে উল্লেখ করেছি CRUD), শেষ পয়েন্ট, হেডার এবং বডি।
এইচটিটিপি পদ্ধতি বর্ণনা করে যে সম্পদের সাথে কি করা উচিত। ঠিক উপরে, আমরা চারটি উপলব্ধ পদ্ধতি উল্লেখ করেছি: POST, GET, PUT, DELETE৷
এন্ডপয়েন্টে একটি ইউআরআই রয়েছে — ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার, যা নির্দেশ করে কিভাবে এবং কোথায় রিসোর্স পাওয়া যাবে। একটি ইউআরএল বা ইউনিফর্ম রিসোর্স লোকেশন হল সবচেয়ে সাধারণ ইউআরআই টাইপ, যা একটি সম্পূর্ণ ওয়েব ঠিকানাকে উপস্থাপন করে।
হেডারে ক্লায়েন্ট এবং সার্ভার সম্পর্কিত ডেটা থাকে। শিরোনামগুলি প্রমাণীকরণ ডেটা অন্তর্ভুক্ত করে: API কী, নাম, আইপি ঠিকানা যা কম্পিউটারের সাথে সম্পর্কিত যে সার্ভারটি ইনস্টল করা আছে এবং প্রতিক্রিয়া বিন্যাস সম্পর্কিত তথ্যও।
বডি সার্ভারে অতিরিক্ত তথ্য পাঠাতে ব্যবহৃত হয়, যেমন আপনি যে ডেটা যোগ করতে চান।
REST API নীতিগুলি
REST কোনো বিশেষ প্রযুক্তি বা প্ল্যাটফর্মের সাথে আবদ্ধ নয়। এটি ভাষা-স্বাধীন। এটি কীভাবে API তৈরি করতে হয় তা সুনির্দিষ্টভাবে উল্লেখ করে না। কিন্তু এটি ছয়টি স্থাপত্যের সীমাবদ্ধতা ব্যবহার করে। সেই সীমাবদ্ধতাগুলি অনুসরণ করে ইন্টারফেসটিকে একটি বৈধ REST API বলা যেতে পারে। তারা বর্ণনা করে যে কিভাবে সার্ভার অনুরোধ প্রক্রিয়া করে এবং তাদের প্রতিক্রিয়া জানায়।
ক্লায়েন্ট সার্ভার
REST API একটি ক্লায়েন্ট-সার্ভার আর্কিটেকচার শৈলী প্রয়োগ করে। ক্লায়েন্ট সম্পদের জন্য অনুরোধ পাঠাচ্ছে এবং ডেটা স্টোরেজের সাথে যুক্ত নয়। ডেটা স্টোরেজ সার্ভারের ভিতরেই থাকে। সার্ভার ব্যবহারকারী ইন্টারফেসের সাথে যোগাযোগের সাথে জড়িত নয়। ক্লায়েন্ট এবং সার্ভার পরস্পর নির্ভরশীলভাবে বিকশিত হয়। এই ফ্যাক্টরটি REST কে আরও বেশি নমনীয় এবং মাপযোগ্য করে তোলে।
ইউনিফর্ম ইন্টারফেস
ইউনিফাইড ইন্টারফেস হল REST API-কে আলাদা করার একটি অপরিহার্য উপাদান। এটি বলে যে সার্ভারের সাথে যোগাযোগের জন্য একটি একক উপায় রয়েছে, অ্যাপ্লিকেশন এবং ডিভাইসের ধরন বোঝায় না।
ইউনিফর্ম ইন্টারফেসের চারটি নীতি রয়েছে:
- সম্পদ সনাক্তকরণ. প্রতিটি সম্পদের একটি শনাক্তকরণ থাকতে হবে যা সম্পদ রাষ্ট্র থেকে স্বাধীন। URL একটি শনাক্তকারী হিসাবে কাজ করে।
- প্রতিনিধিত্বের মাধ্যমে সম্পদের হেরফের। একটি সম্পদ উপস্থাপনা (যে ক্লায়েন্ট আছে) সম্পদ মুছে ফেলা বা সংশোধন করার জন্য প্রয়োজনীয় ডেটা ধারণ করে। ক্লায়েন্ট একটি উপস্থাপনা পাঠায় যা সার্ভারকে (একটি JSON অবজেক্ট) সংশোধন, অপসারণ বা যোগ করতে হবে।
- স্ব-বর্ণনামূলক বার্তা। এই ধরনের বার্তা প্রাপকের বোঝার জন্য সমস্ত তথ্য আছে। পৃথক ডকুমেন্টেশন বা বার্তাগুলিতে কোন অতিরিক্ত তথ্যের প্রয়োজন নেই। সার্ভারের অনুরোধ পার্স করার জন্য প্রতিটি বার্তায় যথেষ্ট তথ্য রয়েছে৷
- অ্যাপ্লিকেশন স্টেটের ইঞ্জিন হিসাবে হাইপারমিডিয়া। Hypermedia প্রতিটি প্রতিক্রিয়ার জন্য লিঙ্ক ব্যবহার প্রয়োজন যাতে ক্লায়েন্ট অন্যান্য সংস্থান খুঁজে পেতে পারে। REST-এ, হাইপারমিডিয়া সমস্ত মিথস্ক্রিয়াগুলির জন্য ব্যবহৃত হয়।
রাষ্ট্রহীন
এর মানে হল যে সার্ভারে ক্লায়েন্ট সম্পর্কে কোনও ডেটা নেই। অনুরোধ প্রক্রিয়াকরণের জন্য প্রয়োজনীয় সমস্ত তথ্য অনুরোধে অন্তর্ভুক্ত করা হয়েছে। ক্লায়েন্ট সমস্ত সেশনের তথ্য সঞ্চয় করে।
ক্যাশেযোগ্য
প্রতিটি প্রতিক্রিয়াতে অবশ্যই তথ্য থাকতে হবে যে এটি ক্যাশেযোগ্য কিনা এবং প্রতিক্রিয়াটি ক্যাশে করা যেতে পারে। যদি এটি ক্যাশেযোগ্য হয়, তাহলে অনুরূপ অনুরোধে, ক্লায়েন্ট বারবার সার্ভারে অনুরোধ না পাঠিয়ে একই ডেটা ব্যবহার করতে পারে। এটি কর্মক্ষমতা এবং প্রাপ্যতা উন্নত করতে সাহায্য করে।
স্তরযুক্ত সিস্টেম
REST স্তরের শ্রেণিবিন্যাস প্রয়োগ করে, যা উপাদানগুলির আচরণের উপর নির্দিষ্ট সীমাবদ্ধতা তৈরি করে। একটি স্তরযুক্ত সিস্টেমে, উপাদানগুলি শুধুমাত্র নিকটতম স্তরে অবস্থিত উপাদানগুলি এবং যেগুলির সাথে তারা ইন্টারঅ্যাক্ট করে তা দেখতে পারে৷
চাহিদা অনুযায়ী কোড
এটি একটি ঐচ্ছিক বৈশিষ্ট্য যা ক্লায়েন্টদের কোড ডাউনলোড এবং কার্যকর করতে দেয়।
REST API কি পার্থক্য করে?
REST API-এর ছয়টি নীতিকে এই ইন্টারফেস এবং অন্যান্য প্রকারের মধ্যে মূল পার্থক্য হিসেবে বিবেচনা করা যেতে পারে। উপরন্তু, বিভিন্ন পরামিতি REST আলাদা করে।
প্রথমত, REST এর সারমর্ম অন্যান্য প্রকারের সাথে এর অসঙ্গতি নির্ধারণ করে। এটি একটি স্থাপত্য শৈলী যেখানে একটি স্থাপত্য একটি RESTful ওয়েব পরিষেবা প্রদানের জন্য আপনাকে অনুসরণ করতে হবে এমন প্রয়োজনীয়তার একটি সেট উপস্থাপন করে৷ উদাহরণস্বরূপ, SOAP এবং RPC হল মেসেজিং প্রোটোকল যা বার্তাগুলিকে বর্ণনা করে। স্থাপত্য শৈলীর বিপরীতে, যা শুধুমাত্র প্রয়োজনীয়তা (সীমাবদ্ধতা) নির্দিষ্ট করে বার্তাটি অবশ্যই পূরণ করতে হবে।
গঠন
সাধারণত, API অ্যাপ-টু-অ্যাপ ফর্ম্যাট অনুসরণ করে, যখন REST একটি ভিন্ন কাঠামো অনুসরণ করে — ক্লায়েন্ট-সার্ভার। ক্লায়েন্ট এবং সার্ভার স্বাধীনভাবে বিকশিত হচ্ছে, কাজের ক্ষেত্রে আরও নমনীয়তা প্রদান করছে।
বার্তা বিনিময় বিন্যাস
API সাধারণত নির্দিষ্ট বার্তা বিন্যাস ব্যবহার করে; উদাহরণস্বরূপ, SOAP XML ব্যবহার করে। REST এমন একটি কঠোর নীতি অনুসরণ করে না। এটি ডেটা আদান প্রদানের জন্য প্রায় যেকোনো বিন্যাস ব্যবহার করতে পারে। যাইহোক, JSON এখন সবচেয়ে জনপ্রিয়।
JSON এর জনপ্রিয়তার পিছনে সুস্পষ্ট কারণ রয়েছে — এটি মানুষের পাঠযোগ্য এবং ডেটা বিনিময় বিন্যাস বিশ্লেষণ করা সহজ। JSON ভাষা-স্বাধীন, এবং আপনি JavaScript ছাড়াও যেকোনো ভাষার সাথে এটি ব্যবহার করতে পারেন।
নমনীয়তা
REST একটি নমনীয় স্থাপত্য শৈলী, তাই বিকাশকারীরা এটি ব্যাপকভাবে ব্যবহার করে। SOAP-এর সাথে তুলনা করে — উন্নত সুরক্ষা বৈশিষ্ট্যগুলির সাথে আরও জটিল প্রোটোকল যাতে আরও ব্যান্ডউইথের প্রয়োজন হয়, REST-এ সাধারণ নির্দেশিকা রয়েছে যা বিকাশকারীদের তাদের বিন্যাসে সেই প্রয়োজনীয়তাগুলি ব্যবহার করতে দেয়৷ আর্কিটেকচারটি উচ্চ কার্যকারিতা প্রদান করে, এটি বিশেষ করে মোবাইল ডিভাইসের জন্য চাহিদা তৈরি করে, যেখানে ডাউনলোডের গতি গুরুত্বপূর্ণ।
আমরা দেখতে পাচ্ছি, অন্যান্য পরিচিত API-এর তুলনায় REST-এর কিছু সুবিধা রয়েছে। তাই টুইটার এবং গুগলের মতো সমস্ত নেতৃস্থানীয় সংস্থাগুলি তাদের পণ্যগুলির জন্য এটি প্রয়োগ করেছে। সর্বোপরি, এটি বিশ্বব্যাপী বিকাশকারীদের কাছে ডেটা স্থানান্তর করার আদর্শ এবং সহজ উপায় এবং সফ্টওয়্যার বিকাশের জন্য দক্ষ এবং মাপযোগ্য ইন্টারফেস তৈরি করার জন্য একটি প্রমাণিত প্রক্রিয়া।