রেস্ট কি? কিছুটা বিভ্রান্ত [বন্ধ]


155

আমি এই ধারণার অধীনে ছিলাম যে REST একটি ওয়েব পরিষেবা ছিল তবে মনে হয় আমি এই ভেবে ভুল করছি - তাই, রেস্ট কি?

আমি উইকিপিডিয়ায় পড়েছি কিন্তু এখনও আমার মাথাটি এটির চারপাশে জড়িয়ে রাখতে পারি না। কেন অনেক জায়গাগুলি এপিআই এর REST এপিআই'র উল্লেখ করে?


21
@ জন স্যান্ডার্স: এটি কীভাবে সম্ভাব্য সদৃশ? অন্য ব্যক্তি স্পষ্টতই জানেন যে আরএসটি কী, অন্যদিকে নাথান বিভ্রান্ত।
ভুয়া কোড বানর রশিদ

আমি অনুভব করেছি যে অন্যটি তার প্রশ্নের উত্তর দেবে। অন্য কেউ যদি তাতে একমত না হন, তবে নিকটতম ভোটের মেয়াদ শেষ হয়ে যাবে। আমাদের কাছে এই প্রশ্নের প্রায় দশটি উত্তর রয়েছে। কেবলমাত্র "বিশ্রাম" ট্যাগটি ক্লিক করুন এবং আপনি সেগুলি দেখতে পাবেন।
জন স্যান্ডার্স

1
আরআরইএসটি হ'ল ওয়েব পরিষেবাদি তৈরির নিয়মের একটি সেট। যদি কোনও API এই নিয়ম অনুসারে নির্মিত হয় তবে এটি একটি REST এপিআই। আমি আমার রাবার হাঁসের কাছে REST কে কীভাবে ব্যাখ্যা করেছি সেগুলি বিধিগুলির কিছু অনানুষ্ঠানিকভাবে ব্যাখ্যা করে।
ব্যবহারকারী 42

উত্তর:


127

আরআরইএসটি কোনও নির্দিষ্ট ওয়েব পরিষেবা নয় তবে রাষ্ট্রীয় তথ্য পরিচালনার জন্য একটি নকশা ধারণা (আর্কিটেকচার)। এর সেমিনাল পেপারটি ছিল রায় টমাস ফিল্ডিংয়ের গবেষণামূলক প্রবন্ধ (2000), "আর্কিটেকচারাল স্টাইলস এবং নেটওয়ার্ক-ভিত্তিক সফটওয়্যার আর্কিটেকচারের ডিজাইন" ( ক্যালিফোর্নিয়া বিশ্ববিদ্যালয়, ইরভিন) থেকে অনলাইনে উপলব্ধ )।

প্রথমে রায়ান তোমায়েকোর পোস্টটি পড়ুন আমি কীভাবে আমার স্ত্রীর কাছে আরআরএসটি ব্যাখ্যা করেছি ; এটি একটি দুর্দান্ত সূচনা পয়েন্ট। তারপরে ফিল্ডিংয়ের আসল প্রবন্ধটি পড়ুন। এটি এত উন্নত নয়, এটি দীর্ঘও নয় (ছয়টি অধ্যায়, ১৮০ পৃষ্ঠা)! (আমি জানি আপনার স্কুলে বাচ্চারা এটি পছন্দ করে)।

সম্পাদনা: আমি বিশ্রাম সম্পর্কে ব্যাখ্যা করার চেষ্টা করা অর্থহীন বলে মনে করি। এর স্কেলিবিলিটি, ভিজিবিলিটি (স্টেটলেস) ইত্যাদির মতো অনেকগুলি ধারণা রয়েছে যা পাঠককে উপলব্ধি করতে হবে এবং সেগুলি বোঝার সেরা উত্স হ'ল প্রকৃত গবেষণামূলক প্রবন্ধ। এটি পোষ্ট / জিইটি ইত্যাদির চেয়ে অনেক বেশি


@ নাথান, আমাকে বিশ্বাস করুন, আপনার আগের মতো আমারও একই সমস্যা ছিল। থিসিসটি পড়ুন, সম্ভবত কয়েকবার আস্তে আস্তে এগিয়ে যান, তবে আপনি ধারণাটি উপলব্ধি করতে পারবেন, এটি আসলে মোটেই শক্ত নয়। লোকেরা কেবল এটি খারাপভাবে ব্যাখ্যা করার প্রবণতা রাখে।
অ্যান্ডার্স

বিকাশকারীরা যখন রেস্টকে নিয়োগ করার চেষ্টা করে এবং কেবল তাদের কোডেই এটি করার চেষ্টা করে (পুরো সিস্টেমে আরএসটি মাথায় রেখে পরিকল্পনা না করে), জাহান্নাম আসে :-)
কারাতেডোগ

@ আন্ডারস, আরআরএসটি বিবেচনা করে এটি কী, আপনি কীভাবে আরআরটি বনাম ওয়েব পরিষেবাদির তুলনা করতে পারেন?
বন্দী


1
পুরো অধ্যায়টি পড়ার পরিবর্তে এই অধ্যায়টি যথেষ্ট হবে: ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
andilabs

74

REST হ'ল একটি সফ্টওয়্যার ডিজাইনের ধরণ যা সাধারণত ওয়েব অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত হয়। সাধারণ ব্যক্তির ভাষায় এটির অর্থ হ'ল এটি অনেকগুলি বিভিন্ন প্রকল্পে ব্যবহৃত একটি সাধারণ ধারণা। এটি রিপ্রেসেটেশনাল স্টেট ট্রান্সফারকে বোঝায় । আরআরএসটির মূল ধারণাটি সার্ভার-সাইডে (কোনও ডাটাবেস সারণির সারিগুলির মতো) অবজেক্টগুলিকে তৈরি করা বা ধ্বংস করার চেয়ে সংস্থান হিসাবে বিবেচনা করা হচ্ছে as

আরআরএসটি সম্পর্কে চিন্তা করার সবচেয়ে প্রাথমিক উপায়টি আপনার ওয়েব অ্যাপ্লিকেশনগুলির URL গুলি ফর্ম্যাট করার একটি উপায়। উদাহরণস্বরূপ, যদি আপনার সংস্থানটিকে "পোস্ট" বলা হত তবে:

/posts কোনও ব্যবহারকারী কীভাবে সমস্ত পোস্টে প্রদর্শিত হবে তা প্রদর্শনের জন্য।

/posts/:id কোনও ব্যবহারকারী কীভাবে কোনও স্বতন্ত্র পোস্ট অ্যাক্সেস করতে এবং দেখতে পারবেন তা তাদের অনন্য আইডির ভিত্তিতে পুনরুদ্ধার করা হবে।

/posts/new আপনি কীভাবে একটি নতুন পোস্ট তৈরির জন্য কোনও ফর্ম প্রদর্শন করবেন।

/usersআপনি কীভাবে ডাটাবেস স্তরে নতুন পোস্ট তৈরি করবেন তা হ'ল একটি পোষ্ট অনুরোধ প্রেরণ ।

একটি পুট অনুরোধ প্রেরণ এটি হ'ল /users/:idআপনি কীভাবে কোনও প্রদত্ত পোস্টের বৈশিষ্ট্যগুলি আপডেট করবেন, আবার কোনও অনন্য আইডি দ্বারা চিহ্নিত।

একটি মুছে ফেলা অনুরোধ প্রেরণ এটি হ'ল /users/:idআপনি কীভাবে কোনও প্রদত্ত পোস্ট মুছবেন, আবার কোনও অনন্য আইডি দ্বারা চিহ্নিত identified

আমি এটি বুঝতে পেরেছি, আরইএসটি প্যাটার্নটি মূলত রুবে অন রেল ফ্রেমওয়ার্কের দ্বারা (ওয়েব অ্যাপ্লিকেশনগুলির জন্য) জনপ্রিয় হয়েছিল, যা রেস্টস্টুল রুটগুলিতে একটি বড় জোর দেয়। আমি যদিও এটি সম্পর্কে ভুল হতে পারে।

আমি এটি সম্পর্কে কথা বলতে সবচেয়ে যোগ্য নাও হতে পারি, তবে এইভাবেই আমি এটি শিখেছি (বিশেষত রেলের বিকাশের জন্য)।

যখন কেউ "আরএসটি এপিআই" বোঝায়, সাধারণত তারা যা বোঝায় তা হ'ল একটি এপিআই যা ডেটা পুনরুদ্ধারের জন্য রিস্টালফুল ইউআরএল ব্যবহার করে।


2
আপনারা ভাগ্যবান, কারণ রেলগুলি আরএসটি নীতিতে নির্মিত হয়েছে এবং আপনি যদি রেল সরঞ্জামগুলি ব্যবহার করেন তবে আপনার কোডটি বিশ্রামযোগ্য হবে। তবে সেখানে কোডার রয়েছে যারা আরআরইএসটি সম্পর্কে জ্যাক বুঝতে পারে না, তারা কী চায় কোড করে এবং শেষ পর্যন্ত তারা এই 'ইউআরএল ফর্ম্যাটিং' ব্যবহার করে কারণ এটি ট্রেন্ডি।
কারাতেডোগ

8
যেখানে এই উত্তরটিতে / ব্যবহারকারীদের ব্যবহার হয়েছে, তা কি পোস্ট / হওয়া উচিত নয়?
ময়ূরেশ শ্রীবাস্তব

@ ময়ূরেশশ্রীবাস্তব লক্ষ্য করুন যে পুট উদাহরণগুলিতে রয়েছে: আইডি এবং পোস্টের উদাহরণ নেই: আইডি। বাকি গল্পের জন্য গুগল। (পোষ্ট: অ-নিরাপদ, নন-আদর্শহীন; পুট: নিরাপদ নয়, আদর্শবান)
অজিত গঙ্গা

38

RESTএকটি স্থাপত্য শৈলী এবং নেটওয়ার্ক-ভিত্তিক সফ্টওয়্যার আর্কিটেকচারের জন্য একটি নকশা

RESTধারণাগুলি সম্পদ হিসাবে উল্লেখ করা হয়। একটি উত্স একটি প্রতিনিধিত্ব অবশ্যই রাষ্ট্রহীন হতে হবে। এটি কিছু মিডিয়া টাইপের মাধ্যমে প্রতিনিধিত্ব করা হয়। মিডিয়া ধরনের কিছু উদাহরণ অন্তর্ভুক্ত XML, JSONএবং RDF। সংস্থানগুলি উপাদান দ্বারা চালিত হয়। উপাদানগুলি স্ট্যান্ডার্ড ইউনিফর্ম ইন্টারফেসের মাধ্যমে সংস্থানগুলি অনুরোধ করে এবং হেরফের করে। HTTP- র ক্ষেত্রে, এই ইন্টারফেস মান HTTP- র অপস যেমন নিয়ে গঠিত GET, PUT, POST, DELETE

RESTসাধারণত HTTPHTTP- র সরলতার কারণে এবং RESTful নীতিগুলিতে এর খুব প্রাকৃতিক ম্যাপিংয়ের কারণে সাধারণত ব্যবহৃত হয় । REST তবে কোনও নির্দিষ্ট প্রোটোকলে আবদ্ধ নয়।

মৌলিক REST নীতি

ক্লায়েন্ট-সার্ভার যোগাযোগ

ক্লায়েন্ট-সার্ভারের আর্কিটেকচারগুলির উদ্বেগগুলির একটি খুব স্বতন্ত্র বিচ্ছেদ রয়েছে। RESTful শৈলীতে নির্মিত সমস্ত অ্যাপ্লিকেশনগুলিকে নীতিগতভাবে ক্লায়েন্ট-সার্ভারও থাকতে হবে।

আড়ম্বরহীন

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

ক্যাশেবেল

ক্যাশে সীমাবদ্ধতা ব্যবহার করা যেতে পারে, ফলে প্রতিক্রিয়া ডেটাকে ক্যাশেযোগ্য বা না-ক্যাশযোগ্য হিসাবে চিহ্নিত করতে সক্ষম করে। ক্যাশেযোগ্য হিসাবে চিহ্নিত কোনও ডেটা একই পরবর্তী অনুরোধের প্রতিক্রিয়া হিসাবে পুনরায় ব্যবহার করা যেতে পারে।

ইউনিফর্ম ইন্টারফেস

সমস্ত উপাদান একক ইউনিফর্ম ইন্টারফেসের মাধ্যমে ইন্টারেক্ট করতে হবে। যেহেতু সমস্ত উপাদানগুলির ইন্টারঅ্যাকশনটি এই ইন্টারফেসের মাধ্যমে ঘটে, বিভিন্ন পরিষেবার সাথে ইন্টারঅ্যাকশন খুব সহজ। ইন্টারফেস একই! এর অর্থ হ'ল বাস্তবায়নের পরিবর্তনগুলি বিচ্ছিন্নভাবে করা যেতে পারে। এই জাতীয় পরিবর্তনগুলি মৌলিক উপাদানগুলির মিথস্ক্রিয়াকে প্রভাবিত করবে না কারণ ইউনিফর্ম ইন্টারফেস সর্বদা অপরিবর্তিত থাকে। একটি অসুবিধা হ'ল আপনি ইন্টারফেসের সাথে আটকে আছেন। ইন্টারফেস পরিবর্তন করে যদি কোনও নির্দিষ্ট পরিষেবাতে কোনও অনুকূলকরণ সরবরাহ করা যেতে পারে, তবে REST এটি নিষিদ্ধ করে বলে আপনি ভাগ্যের বাইরে। উজ্জ্বল দিকে, তবে, ওয়েস্টের জন্য আরএসটিটি অপ্টিমাইজ করা হয়েছে, তাই এইচটিটিপি থেকে আরএসটি-র অবিশ্বাস্য জনপ্রিয়তা!

উপরোক্ত ধারণাগুলি আরইএসটি-র বৈশিষ্ট্য নির্ধারণ করে এবং ওয়েব পরিষেবাদির মতো অন্যান্য আর্কিটেকচার থেকে আরইএসটি আর্কিটেকচারকে পৃথক করে। এটি উল্লেখ করা দরকারী যে একটি রেস্ট সার্ভিস একটি ওয়েব পরিষেবা, তবে একটি ওয়েব পরিষেবা অগত্যা একটি আরএসটি পরিষেবা নয়।

এই ব্লগে দেখুন পোস্টে উপর বিশ্রাম ডিজাইন প্রিন্সিপাল আরও বিশদের জন্য বিশ্রাম এবং উপরোক্ত নীতির।


15

এটি রিপ্রেজেনটিভাল স্টেট ট্রান্সফারকে বোঝায় এবং এর অর্থ অনেকগুলি বিষয় হতে পারে তবে সাধারণত আপনি যখন API এবং অ্যাপ্লিকেশনগুলির বিষয়ে কথা বলছেন তখন আপনি ওয়েব পরিষেবা করার বা ওয়েবে কথা বলার জন্য প্রোগ্রাম পাওয়ার উপায় হিসাবে REST সম্পর্কে কথা বলছেন।

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

সংক্ষেপে, REST আপনাকে ওয়েব ব্রাউজার যেমন ব্যবহার করে তার অনুরূপ সরঞ্জামগুলি ব্যবহার করে ইন্টারনেটে কথা বলার জন্য দুটি অ্যাপ্লিকেশন পেতে দেয় allows এটি এসওএপি থেকে অনেক সহজ এবং আরইএসটি যা কিছু করে তা বলে, "আরে, জিনিসগুলি এত জটিল হওয়ার দরকার নেই।"

পরার যোগ্য:


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

@ আন্ডারস - তিনি বলেছিলেন যে তিনি একটি আরএসটি এপিআই খুঁজছেন এবং ভেবেছিলেন এটি ওয়েবসার্ভিস ব্যবহারের একটি উপায় a আপনি এটির মতোই আরআরএসটি ব্যবহার করতে পারেন এবং সেই দক্ষতায় এটি এসওএপি যা অর্জন করে তার অনেকটা সাফল্য অর্জন করে। বিশ্বের বৃহত্তম রিস্টালফুল অ্যাপ্লিকেশন হিসাবে ওয়েবে সম্পর্কে কথা বলাও সম্ভব, তবে আপনি কী জন্য একটি আরএসটি এপিআই ব্যবহার করবেন তা সত্যই তা ব্যাখ্যা করে না।
চিহ্নিত করুন

REST এবং SOAP একই ধারণায় দেখে এটি আসলে আমার প্রধান সমস্যা হয়ে দাঁড়িয়েছে। দেখে মনে হচ্ছে এপিআই এর নকশায় কেবলমাত্র বিশ্রামযোগ্য।
বন্দী

4

http://en.wikipedia.org/wiki/Representational_State_Transfer

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


3
হতে পারে এটি কেবল আমিই তবে আমি যথাযথ উদ্ধৃতি সহ স্ট্যাকওভারফ্লো সম্পর্কিত প্রাসঙ্গিক উত্তরটি দেখতে চাই। শুধু আমাকে রসবোধ করুন এবং ধরুন উইকিপিডিয়াটি ভুগছে। আপনার লিঙ্ক হুম তখন কি ভাল করবে? :)
ভুয়া কোড বানর রশিদ

1
@ হ্যাক সো: তা কি আপনার উত্তরে থাকা উচিত নয়?
ভুয়া কোড বানর রশিদ

আমি কেবল সম্পাদনা বৈশিষ্ট্যটি লক্ষ্য করেছি। :)
হ্যাক

1
@ কেরেটেডোগ: এইচটিটিপি দিয়ে আরআরইএসটি অর্জন করা যায়, তবে এটি বিভিন্ন তথ্য স্থানান্তর পদ্ধতির মাধ্যমে করা যেতে পারে।
হ্যাক

1
এটি এইচটিটিপি প্রোটোকল যা সম্পর্কে আপনি লিখছেন, REST হ'ল একটি আর্কিটেকচার।
কারাতেডোগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.