হাইপারমিডিয়া (HATEOAS) এর সুবিধা কী?


17

প্রোগ্রামগুলির মাধ্যমে ব্যবহারের উদ্দেশ্যে তৈরি এপিআইয়ের জন্য হেটিওএসের সুবিধাটি আমি বুঝতে পারি না (মানুষের সরাসরি আপনার এপিআই ব্রাউজ করার বিপরীতে)। অবশ্যই, গ্রাহক কোনও ইউআরএল স্কিমাতে আবদ্ধ নয় তবে তারা একটি ডেটা স্কিমাতে আবদ্ধ যা আমার মনে একই জিনিস।

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

HATEOAS:

order = get(orderURL);
item = get(order.itemURL[5]);

অ HATEOAS:

order = get(orderURL);
item = get(getItemURL(order,5));

প্রথম মডেলটিতে আমাকে সত্যটি জানতে হবে যে অর্ডার অবজেক্টটির আইটেম URL রয়েছে। দ্বিতীয় মডেলটিতে আমাকে আইটেমের ইউআরএল কীভাবে তৈরি করবেন তা জানতে হবে। উভয় ক্ষেত্রেই আমাকে সময়ের আগে কিছুটা "জানতে" হবে তাই হেটোয়াস আসলে আমার জন্য কী করছে?


1
get(orderURL);আপনাকে বলা উচিত the fact that the order object has an itemURL field
ইয়ানিস

আপনি যখন ক্লায়েন্ট অ্যাপ্লিকেশন লিখবেন তখন আপনাকে ক্ষেত্রটি কী তা সময়ের আগে জানতে হবে।
পেস


8
কোনও অ্যাপ্লিকেশন যদি কোনও অর্ডার থেকে আইটেমটি পাওয়ার কথা হয় তবে যদি অ্যাপ্লিকেশন এমনকি কোনও অর্ডারে একটি আইটেম থাকে তা না জানে? আবিষ্কার ম্যানুয়াল ব্রাউজিংয়ের জন্য কাজ করে তবে স্বয়ংক্রিয় অ্যাপ্লিকেশনগুলির জন্য নয়।
পেস

লোকটি নিজেই এখানে এটি সম্পর্কে কথা বলছেন: roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
থিয়াগো সিলভা

উত্তর:


6

একটি পার্থক্য হ'ল স্কিমা আশা করি একটি মানক, বা কমপক্ষে অন্যরা পুনরায় ব্যবহার করতে পারে।

উদাহরণস্বরূপ, ধরা যাক আপনি টুইটার এপিআই ব্যবহার করছেন এবং আপনি স্ট্যাটাসনেটকেও (বা পরিবর্তে) সমর্থন করতে চান। যেহেতু তারা টুইটারের মতো একই ডেটা মডেলটি ব্যবহার করে, যদি API টি HATEOAS অনুসরণ করে তবে আপনাকে এখন কেবল প্রধান URL পরিবর্তন করতে হবে। যদি এটি না হয় তবে আপনাকে এখন কোড থেকে প্রতিটি একক URL পরিবর্তন করতে হবে ।

অবশ্যই, পরিষেবার যেভাবেই প্রবেশের পয়েন্ট ইউআরএল রাখার জন্য আপনার যদি কোডটি পরিবর্তন করতে হয় তবে এটি তেমন সহায়ক বলে মনে হচ্ছে না। এটি সত্যিই জ্বলজ্বল করে যদি সেই URL টি ডায়নামিকভাবে sertedোকানো হয়; উদাহরণস্বরূপ, আপনি যদি টোলিওর মতো একটি পরিষেবা তৈরি করে যা ব্যবহারকারীর নিজস্ব এপিআইয়ের সাথে ইন্টারেক্ট করবে।


এটি একটি আকর্ষণীয় বিষয় যা আমি বিবেচনা করি নি।
পেস

@ ইয়ানিসরিজোস: হুম, আমি কোথায় দেখছি না যেখানে আমি বলেছিলাম হেটোয়াস একটি মান। আমি বলেছিলাম "(ডেটা) স্কিমা আশা করি একটি মান"। আরআরএসটি পরিভাষায়, এটি হবে মিডিয়া টাইপ।
আন্ড্রে প্যারামিস

দ্বিতীয় পড়ার সময়, আপনি একেবারে ঠিক বলেছেন।
ইয়ানিস

2
হ্যাঁ, আপনি যদি ধরে নেন যে লিঙ্কগুলির জন্য rel নামগুলি একই। তবে সাধারণভাবে কথা বলছি, এবং আপনি যে নির্দিষ্ট উদাহরণটি উল্লেখ করেছেন কেবল তা নয়, বিশ্বের প্রতিটি প্রোগ্রামার অগত্যা একই বা সমমানের ক্রিয়াগুলির জন্য একই নামগুলি বেছে নেবে। এই সুবিধাটি প্রোগ্রামাররা একটি সাধারণ ইন্টারফেসের নামকরণ এবং পরামিতিগুলির সাথে সম্মত হয়ে আসে।
derloopkat

8
  1. অন্বেষণযোগ্য এপিআই: এটি তুচ্ছ শোনায় তবে শোষণীয় এপিআই এর শক্তিটিকে হ্রাস করবেন না। ডেটা চারপাশে ব্রাউজ করার ক্ষমতা ক্লায়েন্ট বিকাশকারীদের এপিআই এবং এর ডেটা স্ট্রাকচারের মানসিক মডেল তৈরি করা অনেক সহজ করে তোলে।

  2. ইনলাইন ডকুমেন্টেশন: লিঙ্ক সম্পর্ক হিসাবে ইউআরএল ব্যবহার ক্লায়েন্ট বিকাশকারীদের ডকুমেন্টেশনের দিকে নির্দেশ করতে পারে।

  3. সাধারণ ক্লায়েন্ট যুক্তি: একটি ক্লায়েন্ট যা কেবল নিজেরাই নির্মাণের পরিবর্তে ইউআরএল অনুসরণ করে, কার্যকর করা এবং বজায় রাখা সহজ হওয়া উচিত।

  4. সার্ভারটি ইউআরএল স্ট্রাকচারের মালিকানা গ্রহণ করে: হাইপারমিডিয়া ব্যবহার করে ক্লায়েন্টের সার্ভার দ্বারা ব্যবহৃত ইউআরএল স্ট্রাকচারের হার্ড কোডিং জ্ঞান সরিয়ে দেয়।

  5. অন্যান্য পরিষেবায় সামগ্রী লোড করা বন্ধ: হাইপারমিডিয়া প্রয়োজনীয় যখন অন্য সার্ভারগুলিতে সামগ্রী লোড করা হয় (উদাহরণস্বরূপ একটি সিডিএন)।

  6. লিঙ্কগুলির সাথে সংস্করণকরণ: হাইপারমিডিয়া API এর সংস্করণে সহায়তা করে।

  7. একই পরিষেবাটির একাধিক বাস্তবায়ন: হাইপারমিডিয়া হ'ল প্রয়োজনীয়তা যখন একই পরিষেবাটির একাধিক বাস্তবায়ন বিদ্যমান থাকে (এবং একটি ক্লায়েন্টকে তাদের একাধিকের অ্যাক্সেসের প্রয়োজন হয়)।

আপনি এই বুলেট পয়েন্টগুলির গভীরতার ব্যাখ্যা এখানে পেতে পারেন: http://soabits.blogspot.no/2013/12/selling-benefits-of-hypermedia.html


> অন্যান্য পরিষেবায় সামগ্রী লোড করা বন্ধ: হাইপারমিডিয়া প্রয়োজনীয় যখন অন্য সার্ভারগুলিতে সামগ্রী লোড করা হয় (উদাহরণস্বরূপ একটি সিডিএন)। না এইটা না. আপনি কেবল একই লিঙ্কগুলি রাখতে এবং সিডিএন ব্যবহার করতে পারেন।
ব্রুনো কস্তা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.