রেস্ট করার সঠিক উপায় কী?


36

আজকাল প্রত্যেকে সকলেই এসওএ করেন , এমনকি কিছু আসলে কী বোঝায় তা না থাকলেও। সুতরাং তারা এটি ভুল করে। এটিকে উপমা হিসাবে ব্যবহার করে আমি জানি REST কী (বা কমপক্ষে আমি মনে করি আমি কী করি) এবং এর কিছু করতে চাই। তবে আমি এটি সঠিকভাবে করতে চাই।

তাই আমার প্রশ্ন হল রেস্ট করার সঠিক উপায় কী?


1
স্ট্যাক ওভারফ্লো 'বাকি' ট্যাগ উইকি যেমন স্ট্যাক এক্সচেঞ্জ নেটওয়ার্কের প্রেক্ষাপটে ক্যানোনিকাল রিসোর্স পায় ঘনিষ্ঠ হিসাবে মনে করা হয়
মশা

17
আমি কিছুক্ষণ চোখ বন্ধ করে রেখেছিলাম ... সম্ভবত সাইকেল চালানোর জন্য গিয়ে তারপরে শুয়ে পড়লাম।
এডওয়ার্ড স্ট্রেঞ্জ

আরআরএসটি কি মূলত কোনও ইউআরএল যেমন মাইডোমাইন.কম / অ্যাকাউন্টস এবং একটি এইচটিটিপি ক্রিয়া ব্যবহার করে কোনও অপারেশন শুরু করার জন্য নয়? ক্রিয়াটি কোথায় নির্দেশ করে যে আপনি ডেটা পেতে, তৈরি করতে, আপডেট করতে বা মুছতে চান কিনা? আমি যখন বিশ্রাম ভাবি তখন আমার যা মনে হয় তাই হয়।
মাফিন ম্যান

2
@ নিক, এটি সর্বাধিক প্রচলিত ব্যাখ্যা, 'আসল জিনিসটি' আঁকাবাঁকা করা খুব কঠিন এবং (যতদূর আমি বলতে পারি) বাস্তবে যে কোনও জায়গায় প্রয়োগ করা পাওয়া অনেক বেশি কঠিন ... (উইলকের উত্তর দেখুন)
বেঞ্জল

3
@ আপনার বোঝাটি বিশ্রামের নয়, এটি HTTP এর চেয়ে বেশি RPC

উত্তর:


30

ওয়েল, কীভাবে একটি রেস্টস্টুল ওয়েব অ্যাপ্লিকেশন তৈরি করতে হয় তার অনেক উপায় আছে এবং না, কোনও অনন্য সঠিক উপায় নেই। RESTful কোনও স্ট্যান্ডার্ড নয় তবে এটি স্ট্যান্ডার্ডগুলির একটি সেট ব্যবহার করে (এইচটিটিপি, ইউআরআই, মাইম টাইপ, ...)।

এটি দিয়ে শুরু করুন: আমি কীভাবে আমার স্ত্রীর কাছে বিশ্রামের বিষয়টি ব্যাখ্যা করেছি

তারপরে, এর সাথে এগিয়ে যান: RESTful ওয়েব পরিষেবাদি কুকবুক

এবং তারপরে ওয়েব অ্যাপ্লিকেশনগুলি বিকাশের জন্য আপনার সম্পূর্ণ প্রচেষ্টা রাখুন কারণ শেখার সর্বোত্তম উপায় হচ্ছে পরীক্ষা-নিরীক্ষা করা এবং আপনি নিজের ভুল থেকে এত কিছু শিখতে পারেন;)

আপনার প্রথম ওয়েব অ্যাপ্লিকেশনগুলি পুরোপুরি বিশ্রামে না থাকলে চিন্তা করবেন না: আপনি এটি করার উপায়টি খুঁজে পাবেন!

সুতরাং, ওবি-ওয়ান কেনোবি উদ্ধৃত করে, "জোর আপনার সাথে থাকতে পারে!" ;)

সম্পাদনা

ঠিক আছে, আমাকে আরও নির্দিষ্ট করা যাক। আপনি কিছু রেস্টলফুল ওয়েবআপ করতে চান, তাই না?ঠিক আছে, যেমনটি আমি বলেছি এটি করার অনেকগুলি উপায় রয়েছে তবে এটিই মূল গাইডলাইন।

সংজ্ঞা

REST (প্রতিনিধিত্বমূলক রাজ্য স্থানান্তর) বিতরণ সিস্টেমের জন্য একটি সফ্টওয়্যার আর্কিটেকচারের স্টাইল (যেমন ডাব্লুডাব্লুডাব্লু)। এটি স্ট্যান্ডার্ড নয় তবে এটি স্ট্যান্ডার্ডের একটি সেট ব্যবহার করে: HTTP, AJAX, এইচটিএমএল, ইউআরআই, মাইম টাইপ ইত্যাদি We 'আমি কীভাবে আমার স্ত্রীর কাছে বিশ্রামের বিষয়টি ব্যাখ্যা করেছি' থেকে নেওয়া:

স্ত্রী : একটি ওয়েব পৃষ্ঠা একটি সম্পদ?

রায়ান : ধরনের। একটি ওয়েব পৃষ্ঠা একটি সংস্থার প্রতিনিধিত্ব করে। সংস্থানগুলি কেবল ধারণা।

আর্কিটেকচারের সীমাবদ্ধতা

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

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

  • সংস্থানসমূহের সনাক্তকরণ : প্রতিটি সংস্থান একটি ইউআরআই দ্বারা সনাক্ত করতে হবে।
  • প্রোটোকল : যোগাযোগ ক্লায়েন্ট এবং সার্ভারে পেতে, একটি প্রোটোকল আগে করা উচিত। প্রতিটি অনুরোধে সঠিক মাইম টাইপ (অ্যাপ্লিকেশন / এক্সএমএল, পাঠ্য / এইচটিএমএল, অ্যাপ্লিকেশন / আরডিএফ + এক্সএমএল ইত্যাদি), ডান শিরোনাম এবং ডান HTTP পদ্ধতি থাকতে পারে (নীচে CRUD বিবরণ দেখুন)।

টি ককটেলের

ঠিক আছে, আমরা দেখেছি যে সংস্থানগুলি সনাক্ত করতে আমরা ইউআরআই ব্যবহার করতে পারি, তবে ক্রিয়াগুলির জন্য আমাদের আরও কিছু প্রয়োজন (যুক্ত করুন, সংশোধন করুন, মুছুন, ইত্যাদি): সিআরইউডি তে একটি দুর্দান্ত স্বাগত (তৈরি করুন, পড়ুন, আপডেট করুন এবং মুছুন)।

  • একটি নতুন সংস্থান তৈরি করুন { HTTP: পোস্ট } O এসকিউএল: INSERT } => তৈরি করুন Create
  • পড়ুন { HTTP: GET } { এসকিউএল: নির্বাচন করুন > => একটি সংস্থান পান
  • আপডেট { HTTP: PUT } { এসকিউএল: আপডেট } => একটি সংস্থান পরিবর্তন করুন
  • মুছে ফেলুন { : মুছে দিন HTTP- র {} SQL এর: মুছে দিন } => একটি সম্পদ মুছতে

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

--- পরবর্তী অংশটি ব্যবহার করা উচিত তবে এটি কোনও আরএসটি-র বন্ধন নয়: এটি লিঙ্কযুক্ত ডেটা সম্পর্কিত concerns ---

কোনো URI

প্রযুক্তিগত বিবরণ থেকে অ্যাবস্ট্রাক্ট ইউআরআই! ইউআরআইকে বিদায়টি নিম্নরূপ বলুন:

http://www.example.com/index.php?query=search&id=9823&date=08272012

ইউআরআই পুনরায় নকশা! উপরের লিঙ্কটি নিন এবং নীচে এটি পরিবর্তন করুন:

http://www.example.com/search/2012/08/27/9823

এটা অনেক ভাল, তাই না? এটি দ্বারা করা যেতে পারে:

আরেকটি বিষয়: বিভিন্ন উত্সকে উপস্থাপন করতে বিভিন্ন ইউআরআই ব্যবহার করুন:

মনোযোগ দিন : About.html এবং About.rdf ফাইল নয়! তারা কোনও এক্সএসএলটি রূপান্তরের ফলাফল হতে পারে!

বিষয়বস্তু আলোচনা

আপনি যদি এই পর্যায়ে পৌঁছেছেন, অভিনন্দন! সম্ভবত, আপনি আরও বিমূর্ত ধারণা পেতে প্রস্তুত কারণ আমরা সিমেন্টিক ওয়েব প্রযুক্তিগত বিশদ বিবরণে প্রবেশ করছি;) ভাল, যখন আপনার ক্লায়েন্ট কোনও সংস্থান চায়, এটি সাধারণত নিম্নলিখিত অনুরোধটি করে:

GET http://www.example.com/about
Accept: application/rdf+xml

তবে সার্ভারটি About.rdf এর সাথে প্রতিক্রিয়া জানাবে না কারণ এর আলাদা ইউআরআই রয়েছে ( http://www.example.com/about.rdf )। সুতরাং, আসুন দেখে নেওয়া যাক 303 প্যাটার্নটি ! সার্ভার এটি ফিরিয়ে দেবে:

303 See Other
Location: http://www.example.com/about.rdf

এবং ক্লায়েন্ট নীচের হিসাবে ফিরে আসা লিঙ্কটি অনুসরণ করবে:

GET http://www.example.com/about.rdf
Accept: application/rdf+xml

অবশেষে, সার্ভারটি অনুরোধ করা সংস্থানটি ফেরত দেবে:

200 OK
about.rdf

চিন্তা করবেন না: আপনার ক্লায়েন্ট অ্যাপ্লিকেশন এর কিছুই করবে না! 303 প্যাটার্নটি অবশ্যই সার্ভার অ্যাপ্লিকেশন দ্বারা করা উচিত এবং আপনার ব্রাউজারটি বাকিটি করবে;)

উপসংহার

প্রায়শই তত্ত্বটি চর্চা থেকে অনেক দূরে। হ্যাঁ, এখন আপনি কীভাবে একটি RESTful অ্যাপ্লিকেশন ডিজাইন এবং বিকাশ করবেন তা জানেন তবে উপরের গাইডলাইনটি কেবল একটি ইঙ্গিত। ওয়েব অ্যাপ্লিকেশনগুলি তৈরির জন্য আপনি আপনার সেরা উপায়টি খুঁজে পাবেন এবং সম্ভবত এটি তত্ত্বটি যেমন চায় তেমন হবে না। কোন অভিশাপ দেবেন না: ডি!

গ্রন্থ-পঁজী

RESTful ওয়েব পরিষেবাদি, সমীর ত্যাগী ag

REST এপিআই অবশ্যই হাইপারটেক্সট চালিত, রয় থমাস ফিল্ডিং

রেস্টস্টুল ওয়েব সার্ভিস: মূল কথা, অ্যালেক্স রদ্রিগেজ

ওয়েবার রেস্ট ওয়ার্কফ্লো


1
আপনি এই লিঙ্কটি যুক্ত করার বিষয়ে বিবেচনা করতে পারেন , এটি আমি পৌঁছেছি এমন সবচেয়ে সম্পূর্ণ গাইড।
বেনজল

আমি দেখলাম পিট এবং পোষ্টগুলি তার অর্থগুলির সাথে অদলবদল হয়েছে (আপনার উত্তরের সাথে সম্পর্কিত): পোস্ট -> তৈরি করুন, পুট -> আপডেট করুন। কোন ধারণা কোন অর্থ বেশি ব্যবহৃত হয়?
আন্দ্রেস এফ।

@ আন্ডারস এফ .: jcalcote.wordpress.com/2008/10/16/… বলেছেন: আপনি নির্দিষ্ট সংস্থান (ইউআরএল) এর সম্পূর্ণ বিষয়বস্তু প্রেরণ করছেন তবে তৈরি করুন = পুট করুন। আপনি যদি কিছু সার্ভার-সাইড অ্যালগরিদম ব্যবহার করে নির্দিষ্ট উত্সটির অধীনস্থ তৈরি করতে সার্ভারে একটি আদেশ পাঠাচ্ছেন তবে তৈরি করুন = পোস্ট করুন। আপডেট = PUT যদি আপনি নির্দিষ্ট সংস্থানটির সম্পূর্ণ সামগ্রী আপডেট করে থাকেন। আপডেট = পোস্ট করুন আপনি যদি নির্দিষ্ট সংস্থানটির এক বা একাধিক অধীনস্তকে আপডেট করার জন্য সার্ভারকে অনুরোধ করছেন।
উইলক

@ বেঞ্জল: আমি আপনার পরামর্শ দিয়ে সম্পাদনা করতে যাচ্ছি;) ধন্যবাদ!
উইলক

1
@ উইলক কিছু বিষয় বিবেচনা করার জন্য! সম্ভবত কেন কেউ এই অধিকার পায় না: পি
আন্দ্রেস এফ।

5

একটি বিশ্রাম বাইবেল বই বা কিছু ....

বাইবেলের কোন বই দরকার নেই; আমার একই একই প্রশ্ন ছিল এবং আমি এই তিনটি নিবন্ধটি পড়ে আরআরইএসটি সম্পর্কে যা জানতে চাইছিলাম তা শিখেছি:

  1. নেট টুটস + থেকে এইচটিটিপি এবং আরএসটি-র একটি সূচনাকারীর পরিচিতি
  2. রেস্টস্টুল ওয়েব সার্ভিস: আইবিএম বিকাশকারী ওয়ার্কসের মূল বিষয়গুলি
  3. ইনফোকিউ থেকে অনুশীলনে বিশ্রামের এইচটিটিপি

তবে আমি এটি সঠিকভাবে করতে চাই।

আপনি উপরের নিবন্ধগুলিতে যেমন পড়বেন, মূল হ'ল আপনার অ্যাপ্লিকেশনটির অ্যাক্সেসযোগ্য টুকরোটিকে "সংস্থানগুলি" হিসাবে ভাবা যা বিদ্যমান HTTP "ক্রিয়াপদ" ব্যবহার করে তৈরি করা, পুনরুদ্ধার, আপডেট করা বা মুছতে পারে: GET, PUT, POST , মুছে ফেলা.

এছাড়াও, PUT এবং পোস্টের মধ্যে পার্থক্য জানুন know এবং কখন তাদের ব্যবহার করবেন। GET, PUT, এবং DELETE হওয়া উচিত আদর্শবান লেনদেন, পোষ্টের উচিত নয়।

এছাড়াও, ক্লায়েন্টের সাথে যোগাযোগ করার সময় HTTP স্থিতি কোডগুলির যথাযথ ব্যবহার করুন।

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