সফ্টওয়্যার ডেভেলপমেন্ট ইন্ডাস্ট্রিতে, ইন্টিগ্রেশনগুলি অ্যাপ্লিকেশন ডিজাইনে মূল ভূমিকা পালন করে। এর জন্য একটি প্রধান প্রযুক্তি হল REST API । REST API-এর জ্ঞান প্রত্যেক প্রযুক্তি বিশেষজ্ঞের জন্য একটি গুরুত্বপূর্ণ দক্ষতা। এই নিবন্ধে, আমরা 25টি REST API প্রশ্ন উপস্থাপন করব যা আপনাকে চাকরির ইন্টারভিউয়ের জন্য প্রস্তুত করতে এবং আপনার দক্ষতা উন্নত করতে সাহায্য করবে। পড়া ভোগ!
প্রথমত, সাক্ষাত্কারকারী সাধারণত REST API-এর প্রশ্নগুলিকে তাত্ত্বিক এবং ব্যবহারিকভাবে ভাগ করেন। প্রথমে, তারা পরিভাষা এবং HTTP অনুরোধ পদ্ধতির উপর 2-3টি তাত্ত্বিক প্রশ্ন জিজ্ঞাসা করে এবং তারপরে আপনি একটি অনুরোধ আঁকার জন্য একটি ব্যবহারিক কাজ পাবেন।
এই নিবন্ধে প্রায়শই জিজ্ঞাসিত তাত্ত্বিক প্রশ্ন রয়েছে, এবং আমি পরবর্তী নিবন্ধে REST API সম্পর্কিত ব্যবহারিক কাজের উদাহরণ প্রকাশ করার পরিকল্পনা করছি। একটি সাক্ষাত্কারে আপনি কোন প্রশ্নগুলি পাবেন তা আমরা আগে থেকে জানি না, তবে আমি নিশ্চিত যে আমাদের সাধারণ প্রশ্নগুলির তালিকার মাধ্যমে কাজ করার প্রক্রিয়ায়, আপনি সম্ভবত বিষয়টির আরও গভীরে প্রবেশ করবেন এবং REST API সম্পর্কে আপনার জ্ঞান উন্নত করতে পারবেন যে কোন ক্ষেত্রে.
এখন, আসুন সাধারণ থেকে জটিল পর্যন্ত যাই, মৌলিক পরিভাষা দিয়ে শুরু করে এবং আরও জটিল প্রশ্ন সহ একটি বিভাগ চালিয়ে যাই।
উত্তর: REST উল্লেখ করার সময় তিনটি শব্দ ব্যবহার করা হয় যেগুলি প্রায়শই একই জিনিস হিসাবে বিবেচিত হয়, তবে এটি সম্পূর্ণ সত্য নয়। এই পদগুলি হল REST, REST API, এবং RESTful API। এখন REST সম্পর্কে একটি উত্তর থাকবে, শব্দটি হল প্রতিনিধিত্বমূলক রাজ্য স্থানান্তর এবং এটি একটি স্থাপত্য শৈলী যা এইচটিটিপি প্রোটোকল (হাইপারটেক্সট ট্রান্সফার প্রোটোকল) এর উপর ভিত্তি করে এমন অ্যাপ্লিকেশন ডেভেলপ করার জন্য যার একটি ফ্রন্ট-এন্ড এবং/অথবা বহিরাগত সিস্টেমের সাথে একীকরণ রয়েছে। REST নির্দেশিকা বর্ণনা করে যেগুলি ডিজাইন করা API পরিষেবাগুলি অনুসরণ করা উচিত৷ এই নীতিগুলি নিশ্চিত করে যে অনুরোধগুলি HTTP ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে পাস করা হয়েছে।
উত্তর: একটি API হল একটি প্রোগ্রামিং ইন্টারফেস যা পৃথক অ্যাপ্লিকেশনগুলিকে যোগাযোগ এবং ডেটা বিনিময় করতে দেয়। উদাহরণস্বরূপ, একটি খাদ্য বিতরণ অ্যাপ্লিকেশন কুরিয়ারের অবস্থান ট্র্যাক করতে এবং এটি একটি মানচিত্রে প্রদর্শন করতে Google Maps API ব্যবহার করতে পারে। একটি REST API হল একটি API যা REST এর নীতিগুলি অনুসরণ করে, সমস্ত ডেটাকে সম্পদ হিসাবে বিবেচনা করে, প্রতিটি একটি অনন্য ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার (URI) দ্বারা উপস্থাপিত হয়।
উত্তর: একটি RESTful API হল REST-এর নিয়ম অনুসারে ডিজাইন করা একটি API (অথবা আপনি "নীতিগুলি"ও বলতে পারেন)৷ অন্য কথায়, REST API এবং RESTful API এর মধ্যে পার্থক্য পরিভাষাগত। প্রথম ক্ষেত্রে REST নিয়মগুলির একটি সেট বোঝায় এবং দ্বিতীয়টি REST নিয়ম অনুসরণ করে একটি নির্দিষ্ট API এর বাস্তবায়নকে বোঝায়। RESTful API শব্দটি প্রায়ই REST API দিয়ে প্রতিস্থাপিত হয় বা এমনকি REST সংক্ষিপ্ততার জন্য। যখন সিস্টেম বিশ্লেষকরা একটি অ্যাপ্লিকেশন ডায়াগ্রামে REST লেবেলযুক্ত তীরগুলি আঁকেন, তখন তারা একটি RESTful API বোঝায়।
উত্তর: REST API অনুরোধ দুটি মৌলিক নীতি অনুসরণ করতে হবে: ক্লায়েন্ট এবং সার্ভারের মধ্যে বিভাজন: ক্লায়েন্ট এবং সার্ভারের মধ্যে মিথস্ক্রিয়া অনুরোধ এবং প্রতিক্রিয়া আকারে সঞ্চালিত হয়। শুধুমাত্র ক্লায়েন্টরা অনুরোধ করতে পারে এবং শুধুমাত্র সার্ভারগুলি একে অপরের থেকে স্বাধীনভাবে কাজ করার জন্য প্রতিক্রিয়া পাঠাতে পারে। একক প্রোটোকল: ক্লায়েন্ট এবং সার্ভারের মধ্যে মিথস্ক্রিয়া একটি একক প্রোটোকল ব্যবহার করে করা উচিত। REST-এর জন্য, এই প্রোটোকল হল HTTP।
উত্তর: আপনি আরও অন্তত 4টি নীতির নাম দিতে পারেন। REST API অনুরোধগুলি সার্ভারে স্টেট সংরক্ষণ করে না এবং সার্ভারের স্তরগুলির মধ্য দিয়ে যেতে পারে এবং ক্যাশে করা যেতে পারে। আপনি সার্ভার প্রতিক্রিয়াতে ক্লায়েন্টদের এক্সিকিউটেবল কোডও পাঠাতে পারেন। সার্ভার স্টেটলেস: সার্ভার অতীতের অনুরোধ/প্রতিক্রিয়া সম্পর্কে কোনো তথ্য সংরক্ষণ করে না। প্রতিটি অনুরোধ এবং প্রতিক্রিয়া মিথস্ক্রিয়া সম্পূর্ণ করার জন্য প্রয়োজনীয় সমস্ত তথ্য ধারণ করে। রাষ্ট্রহীন যোগাযোগ সার্ভারের লোড হ্রাস করে, মেমরি সংরক্ষণ করে এবং কর্মক্ষমতা উন্নত করে। স্তরযুক্ত সিস্টেম: ক্লায়েন্ট এবং API সার্ভারের মধ্যে অতিরিক্ত সার্ভারগুলি স্তরের আকারে বিভিন্ন ফাংশন সঞ্চালনের জন্য সম্ভব। REST নীতির উপর নির্মিত একটি সিস্টেমে, স্তরগুলি মডুলার এবং ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগকে প্রভাবিত না করেই যোগ করা এবং সরানো যায়। ক্যাশেবিলিটি: সার্ভারের প্রতিক্রিয়াগুলি নির্দেশ করে যে এটির সংস্থান ক্যাশেযোগ্য কিনা যাতে ক্লায়েন্টরা কর্মক্ষমতা উন্নত করতে কোনও সংস্থান ক্যাশে করতে পারে। চাহিদা অনুযায়ী কোড: সার্ভার ক্লায়েন্ট অ্যাপ্লিকেশনের মধ্যে কার্যকর করার জন্য তার প্রতিক্রিয়া হিসাবে ক্লায়েন্টদের এক্সিকিউটেবল কোড পাঠাতে পারে।
উত্তর: REST-এ, সার্ভারের দিকের প্রতিটি অ্যাক্সেসযোগ্য বস্তুকে একটি সম্পদ হিসাবে মনোনীত করা হয়। রিসোর্স হল এমন একটি বস্তু যার একটি প্রকার, এর সাথে সম্পর্কিত ডেটা, সার্ভারের অন্যান্য সংস্থানগুলির সাথে একটি সম্পর্ক এবং এটির সাথে কাজ করার জন্য ব্যবহার করা যেতে পারে এমন পদ্ধতির একটি তালিকা রয়েছে। উদাহরণস্বরূপ, একটি সংস্থান একটি HTML বা পাঠ্য ফাইল, একটি ডেটা ফাইল, একটি চিত্র বা ভিডিও বা একটি এক্সিকিউটেবল কোড ফাইল হতে পারে। একটি সংস্থান একটি ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার বা URI দ্বারা চিহ্নিত করা হয়। ক্লায়েন্ট HTTP অনুরোধে তাদের URI ব্যবহার করে সম্পদ অ্যাক্সেস করে।
উত্তরঃ URI মানে ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার। এটি একটি স্ট্রিং যা সার্ভারে একটি সংস্থান সনাক্ত করে। প্রতিটি সংস্থানের নিজস্ব অনন্য ইউআরআই রয়েছে, যা, যখন একটি HTTP অনুরোধে অন্তর্ভুক্ত করা হয়, তখন ক্লায়েন্টদের সেই সংস্থানগুলিতে অ্যাক্সেস এবং ক্রিয়া সম্পাদন করার অনুমতি দেয়। তার ইউআরআই দ্বারা একটি সংস্থান উল্লেখ করার প্রক্রিয়াটিকে "অ্যাড্রেসিং" বলা হয়।
উত্তরঃ CRUD এর অর্থ হল "Create, Read, Update, Delete"। এই চারটি প্রধান ক্রিয়া যা REST API এর মাধ্যমে ডাটাবেসে সঞ্চালিত হতে পারে। প্রতিটি কর্মের নিজস্ব HTTP অনুরোধ পদ্ধতি আছে:
উত্তর: HTTP প্রতিক্রিয়া পেলোড ক্লায়েন্ট দ্বারা অনুরোধ করা সম্পদ ডেটা বোঝায়। একে সংক্ষেপে "HTTP রেসপন্স পেলোড"ও বলা হয়। এই ডেটা JSON, XML, HTML, ছবি, ফাইল ইত্যাদিতে থাকতে পারে, সার্ভার ঠিক কি প্রদান করে তার উপর নির্ভর করে।
উত্তর: REST-এ মেসেজিং বলতে ক্লায়েন্ট এবং সার্ভারের মধ্যে বার্তার আদান-প্রদানকে বোঝায়। যোগাযোগ সর্বদা ক্লায়েন্ট সার্ভারে একটি HTTP অনুরোধ করার সাথে শুরু হয়। সার্ভার এই অনুরোধটি প্রক্রিয়া করে এবং তারপরে একটি HTTP প্রতিক্রিয়া ফেরত পাঠায় যা অনুরোধের স্থিতি এবং ক্লায়েন্টের অনুরোধ করা কোনও সংস্থান নির্দেশ করে।
উত্তর: REST এর পরিপ্রেক্ষিতে, "মেসেজ ব্রোকার" শব্দটি একটি মিডলওয়্যার যা একটি বিতরণ করা অ্যাপ্লিকেশনে বিভিন্ন উপাদান বা সিস্টেমের মধ্যে বার্তা পাঠাতে কাজ করে। ব্রোকার বিভিন্ন সিস্টেম মডিউলের মধ্যে অ্যাসিঙ্ক্রোনাস ডেটা বিনিময়, বার্তা সারিবদ্ধকরণ এবং বার্তা প্রক্রিয়াকরণ প্রদান করতে পারে।
বার্তা ব্রোকারদের অ্যাসিঙ্ক্রোনাস অপারেশন পরিচালনা করতে বা বিজ্ঞপ্তি পাঠাতে ব্যবহার করা যেতে পারে। বার্তা ব্রোকার একটি নেটিভ REST উপাদান নয় কারণ... REST HTTP অনুরোধগুলি ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে সিঙ্ক্রোনাস যোগাযোগের উপর ফোকাস করে।
উত্তর: HTTP অনুরোধ পদ্ধতিটি কাঙ্খিত ক্রিয়াটি নির্দিষ্ট করে যা সার্ভার সম্পদে সম্পাদন করবে। REST এ, ক্লায়েন্ট থেকে সার্ভারে HTTP অনুরোধ করার জন্য চারটি প্রধান পদ্ধতি রয়েছে:
উত্তর: POST হল সার্ভারে একটি রিসোর্স তৈরি করার জন্য যখন PUT হল একটি নির্দিষ্ট URI-তে একটি রিসোর্সকে অন্য রিসোর্স দিয়ে প্রতিস্থাপন করার জন্য। আপনি যদি এমন একটি URI-তে PUT ব্যবহার করেন যার সাথে ইতিমধ্যেই একটি সংস্থান যুক্ত আছে, PUT এটি প্রতিস্থাপন করবে। যদি নির্দিষ্ট URI-তে কোনো সংস্থান না থাকে, PUT একটি তৈরি করে। PUT idempotent, যার অর্থ এটিকে একাধিকবার কল করার ফলে শুধুমাত্র একটি সংস্থান তৈরি করা হবে। এটি ঘটে কারণ প্রতিটি কল একটি বিদ্যমান সংস্থান প্রতিস্থাপন করে (অথবা প্রতিস্থাপনের কিছু না থাকলে একটি নতুন তৈরি করে)। পোস্ট অদম্য নয়। যদি, উদাহরণস্বরূপ, আপনি 10 বার POST কল করেন, তাহলে সার্ভারে 10টি ভিন্ন সংস্থান তৈরি করা হবে, প্রতিটির নিজস্ব URI সহ। যদিও খুব কমই ব্যবহার করা হয়, POST প্রতিক্রিয়াগুলি ক্যাশে করা যেতে পারে, কিন্তু PUT প্রতিক্রিয়াগুলি পারে না৷ POST অনুরোধগুলি সাধারণত ক্যাশেযোগ্য বলে বিবেচিত হয়, তবে সেগুলি ক্যাশে করা যেতে পারে যখন সেগুলিতে ডেটার "সতেজতা" সম্পর্কে স্পষ্ট তথ্য থাকে৷ একটি আরও বিস্তারিত উত্তর হল যে একটি POST (বা প্যাচ) অনুরোধের প্রতিক্রিয়া ক্যাশে করা যেতে পারে যদি ডেটা "তাজা" হয় এবং বিষয়বস্তু-অবস্থান (en-US) শিরোনাম সেট করা হয়, তবে এটি খুব কমই প্রয়োগ করা হয়। অতএব, সম্ভব হলে POST ক্যাশিং এড়ানো উচিত।
উত্তর: REST-এ, একটি HTTP অনুরোধের নিম্নলিখিত মৌলিক উপাদানগুলি রয়েছে: রিসোর্সে (যেমন GET, POST, PUT, DELETE) অনুরোধের পদ্ধতিটি করা হবে। একটি URI যা সার্ভারে অনুরোধ করা সংস্থান সনাক্ত করে। এইচটিটিপি সংস্করণ – অর্থাৎ সার্ভারের প্রতিক্রিয়ায় কোন সংস্করণটি হওয়া উচিত। HTTP অনুরোধ শিরোনামে অনুরোধ সম্পর্কে মেটাডেটা রয়েছে, যেমন ব্যবহারকারী এজেন্ট, ক্লায়েন্ট দ্বারা গৃহীত ফাইল ফর্ম্যাট, অনুরোধের বডি ফরম্যাট, ভাষা, ক্যাশিং পছন্দ ইত্যাদি। একটি HTTP অনুরোধের মূল অংশ, এতে অনুরোধের সাথে যুক্ত সমস্ত ডেটা থাকে . POST বা PUT পদ্ধতি ব্যবহার করে সার্ভারে ডেটা পরিবর্তন করার অনুরোধ হলেই এটি প্রয়োজনীয়।
উত্তর: HTTP প্রতিক্রিয়াগুলি সার্ভার থেকে ক্লায়েন্টের কাছে পাঠানো হয়। তারা ক্লায়েন্টকে জানায় যে অনুরোধ করা পদক্ষেপটি সম্পন্ন হয়েছে (বা হয়নি) এবং অনুরোধ করা সংস্থানগুলি সরবরাহ করা হয়েছে। একটি HTTP প্রতিক্রিয়ার চারটি প্রধান উপাদান রয়েছে: HTTP সংস্করণ ব্যবহৃত। অনুরোধ স্থিতি এবং HTTP প্রতিক্রিয়া স্থিতি কোড সহ স্ট্যাটাস বার। সময়, সার্ভারের নাম, ব্যবহারকারী এজেন্ট, রিটার্নড রিসোর্স ফাইল ফরম্যাট, ক্যাশিং তথ্য সহ প্রতিক্রিয়া সম্পর্কে মেটাডেটা সহ HTTP প্রতিক্রিয়া শিরোনাম। ক্লায়েন্ট দ্বারা অনুরোধ করা সংস্থান সম্পর্কে ডেটা ধারণকারী HTTP প্রতিক্রিয়া বডি
উত্তর: অনুরোধটি সফলভাবে প্রক্রিয়া করা হলে সার্ভার নিম্নলিখিত অপারেশন স্ট্যাটাস কোডগুলি প্রদান করে:
উত্তর: একটি অনুরোধ পুনঃনির্দেশ করার সময় সার্ভার নিম্নলিখিত স্থিতি কোডগুলি প্রদান করে:
উত্তর: অনুরোধ ব্যর্থ হলে সার্ভার নিম্নলিখিত কোডগুলি ফেরত দেয়:
উত্তর: সার্ভারে একটি ত্রুটি থাকলে সার্ভার নিম্নলিখিত কোডগুলি প্রদান করে:
500 অভ্যন্তরীণ সার্ভার ত্রুটি: সার্ভারের সাথে একটি অপ্রত্যাশিত সমস্যার কারণে অনুরোধটি সম্পূর্ণ হয়নি৷
502 খারাপ গেটওয়ে: আপস্ট্রিম সার্ভার থেকে একটি ভুল প্রতিক্রিয়ার কারণে অনুরোধটি সম্পূর্ণ হয়নি।
503 পরিষেবা অনুপলব্ধ: সার্ভার রক্ষণাবেক্ষণ, ওভারলোড বা অন্যান্য অস্থায়ী ব্যাঘাতের কারণে অনুরোধটি প্রক্রিয়া করতে অক্ষম ছিল৷
আপনি এখানে সবচেয়ে সাধারণ HTTP কোডগুলির একটি তালিকা খুঁজে পেতে পারেন
উত্তর: GraphQL হল একটি ক্যোয়ারী ল্যাঙ্গুয়েজ যা ক্লায়েন্টদের শুধুমাত্র তাদের প্রয়োজনীয় ডেটা জিজ্ঞাসা করতে দেয়। GraphQL-এ, ক্লায়েন্ট যে ডেটা পেতে চায় তার গঠন এবং বিন্যাস সংজ্ঞায়িত করে এবং সার্ভার সেই অনুরোধ অনুযায়ী এটি ফেরত দেয়। মূল পার্থক্য হল REST-এর প্রতিটি সংস্থানের জন্য একটি নির্দিষ্ট অনুরোধ এবং প্রতিক্রিয়া বিন্যাস রয়েছে, যখন GraphQL ক্লায়েন্টদের তাদের অনুরোধ সংজ্ঞায়িত করতে এবং শুধুমাত্র তাদের প্রয়োজনীয় তথ্য পেতে দেয়, এটি ব্যবহারে আরও দক্ষ এবং নমনীয় করে তোলে।
উত্তর: REST এবং SOAP (সিম্পল অবজেক্ট এক্সেস প্রোটোকল) হল API তৈরির দুটি পন্থা। তাদের মধ্যে 3টি প্রধান পার্থক্য রয়েছে:
উত্তর: অ্যাসিঙ্ক্রোনাস জাভাস্ক্রিপ্ট বা AJAX হল ওয়েব অ্যাপ্লিকেশনে ব্যবহৃত ওয়েব ডেভেলপমেন্ট প্রযুক্তির একটি সেট। এর মূল অংশে, AJAX একটি ওয়েব পৃষ্ঠাকে সার্ভারে অনুরোধ করতে এবং পুরো পৃষ্ঠাটি আপডেট না করেই পৃষ্ঠার ইন্টারফেস আপডেট করার অনুমতি দেয়।
একটি AJAX ক্লায়েন্ট তার অনুরোধে REST API ব্যবহার করতে পারে, কিন্তু AJAX কে শুধুমাত্র REST API এর সাথে কাজ করতে হবে না। REST API যেকোন ক্লায়েন্টের সাথে যোগাযোগ করতে পারে, তা AJAX ব্যবহার করুক বা না করুক।
REST এর বিপরীতে, যা বার্তা আদান-প্রদানের জন্য HTTP অনুরোধ এবং প্রতিক্রিয়া ব্যবহার করে, AJAX জাভাস্ক্রিপ্টে নির্মিত XMLHttpRequest অবজেক্ট ব্যবহার করে সার্ভারে তার অনুরোধ পাঠায়। সার্ভার প্রতিক্রিয়া পৃষ্ঠার জাভাস্ক্রিপ্ট কোড দ্বারা এটির বিষয়বস্তু পরিবর্তন করার জন্য কার্যকর করা হয়।
উত্তর: REST API বিকাশের চুক্তি প্রথম পদ্ধতি হল এমন একটি পদ্ধতি যেখানে API স্পেসিফিকেশন এবং চুক্তি প্রকৃত বিকাশ শুরু হওয়ার আগে তৈরি এবং সংজ্ঞায়িত করা হয়। এই চুক্তিটি একটি গুরুত্বপূর্ণ নথি হিসাবে কাজ করে যা সংজ্ঞায়িত করে যে কীভাবে ক্লায়েন্টরা API এর সাথে যোগাযোগ করতে পারে এবং বিভিন্ন অনুরোধ থেকে কী প্রত্যাশিত ফলাফল পাওয়া যাবে।
উত্তর: চুক্তির প্রথম পদ্ধতির নিম্নলিখিত সুবিধাগুলি উল্লেখ করা যেতে পারে:
উত্তর: REST API ডেভেলপমেন্টের কোড ফার্স্ট অ্যাপ্রোচ হল এমন একটি পদ্ধতি যেখানে API কার্যকারিতা প্রথমে বিকশিত হয় এবং তারপর সেই কার্যকারিতার উপর ভিত্তি করে একটি API স্পেসিফিকেশন স্বয়ংক্রিয়ভাবে তৈরি হয়। কোড ফার্স্ট পদ্ধতির বৈশিষ্ট্য হল যে ডেভেলপাররা API লজিক লেখার উপর ফোকাস করে এবং সেই যুক্তির উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে ডকুমেন্টেশন এবং স্পেসিফিকেশন তৈরি করার জন্য টুল ব্যবহার করে।
সাধারণভাবে, উভয় পদ্ধতি, কোড ফার্স্ট এবং কন্ট্রাক্ট ফার্স্ট, একই API ডেভেলপমেন্ট প্রকল্পের মধ্যে একত্রিত করা যেতে পারে। এই ক্ষেত্রে, কোড ফার্স্ট দ্রুত প্রোটোটাইপিংয়ের জন্য ব্যবহার করা হয়, তারপর চুক্তিকে আনুষ্ঠানিক করার জন্য কন্ট্রাক্ট ফার্স্ট ব্যবহার করা হয়।
আমি আশা করি এই নিবন্ধটি চাকরির ইন্টারভিউয়ের প্রস্তুতিতে বা REST API সম্পর্কে আপনার জ্ঞানকে সতেজ করতে আপনার জন্য সহায়ক হবে।