HETOAS ব্যবহার করে REST পরিষেবাগুলি আবিষ্কার করার কৌশল আছে?


10

HETOAS সীমাবদ্ধতার সাথে একটি REST পরিষেবা তৈরি করার সময় , সংযোগের মাধ্যমে সংস্থানগুলির অস্তিত্বের বিজ্ঞাপন দেওয়া খুব সহজ। আপনি GETআমার সাইটের মূলটিকে সন্ধান করুন এবং আমি প্রথম স্তরের সমস্ত সংস্থান তালিকাভুক্ত রুট ডকুমেন্টের সাথে প্রতিক্রিয়া জানাব:

{
    users: { href: "/users" }
    questions { href: "/questions" }
}

যে সমস্ত ক্লায়েন্টরা কীভাবে এই hrefমানগুলি পড়তে পারে সেগুলি সেগুলির জন্য GETঅনুরোধ সম্পাদন করতে পারে এবং অ্যাপ্লিকেশনটিতে বিদ্যমান সমস্ত বর্তমান সংস্থানগুলি আবিষ্কার করতে পারে।

এটি মৌলিক অনুসন্ধানের পরিস্থিতিতে ভাল কাজ করে তবে কোনও উত্স অনুসন্ধানযোগ্য কিনা তা নির্দেশ করে না। উদাহরণস্বরূপ, এটি সম্পাদন করা যুক্তিসঙ্গত হতে পারে:

GET /users?surname=Smith

এমন কোনও বিন্যাস রয়েছে যা যথেষ্ট পরিমাণ তথ্যের সাথে এই ক্যোয়ারী ক্ষমতাটি প্রকাশ করতে পারে যে কোনও ক্লায়েন্ট সংস্থান সম্পর্কে পূর্বের জ্ঞান ছাড়াই সুসংগত কোয়েরি গঠন করতে পারে?

অতিরিক্তভাবে, কোনও ক্লায়েন্টকে POSTপ্রত্যাশিত অবস্থানের সাথে একটি নির্দিষ্ট স্থানে একটি সঞ্চালনের অনুমতি দেওয়া হয় এমনটি প্রকাশ করার কোনও উপায় আছে কি ? উদাহরণস্বরূপ, এটি আশা করা যেতে পারে যে কোনও ক্লায়েন্ট একটি নতুন প্রশ্ন সংস্থান তৈরি করতে নিম্নলিখিতটি সম্পাদন করবেন:

POST /questions

{
    title: "Are there strategies for discovering REST services using HATEOAS?",
    body: "When building a REST service with the HATEOAS constraint, it's very..."
}

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

এখানে কি এমন ফর্ম্যাট আছে যা ক্লায়েন্টদের জন্য একই জিনিস করতে সক্ষম?


2
একটি আরএসটি-পরিষেবা আবিষ্কারের বিষয়টি এখানে আলোচনা করা হয়েছে এবং এর উত্তর দেওয়া হয়েছে: স্ট্যাকওভারফ্লো.com / প্রশ্নস / ৯১০১৪৯৪/২ সবচেয়ে সহজ সমাধানটি এমন একটি ফর্ম সহ একটি এক্সএইচটিএমএল টেমপ্লেট ব্যবহার করা যা কেবলমাত্র আপনি যে পদ্ধতিটি ব্যবহার করতে পারবেন তা নয় কেবল তা জানায় ফর্ম উপাদানগুলির মাধ্যমে প্রেরণ করা অবজেক্ট স্ট্রাকচার (ইনপুট, নির্বাচন করুন ইত্যাদি)। ক্লায়েন্টদের কেবল কী প্রয়োজন তা জানতে একটি এক্সএমএল পার্সার থাকা দরকার। আর একটি উপায় ইউআরএল টেম্পলেটগুলির সাথে রয়েছে তবে তারা কেবলমাত্র এমন সংস্থানগুলিতে সহায়তা করে যা ক্যোয়ারী স্ট্রিং নেয়।
Spoike

বিষয়বস্তুর প্রকারের বিষয়ে; এটি এইচটিটিপি শিরোনামে করা সামগ্রীর আলোচনার সাথে সমাধান করা হয়। সার্ভার যদি অনুরোধ করা সামগ্রীর ধরণের পরিবেশন করতে না পারে তবে এটিতে কোন HTTP ত্রুটি (যেমন 300 বা 406) প্রেরণ করা উচিত তা উল্লেখ করে যে কোন সামগ্রীর প্রকারটি ফিরে আসতে পারে।
Spoike

উত্তর:


1

কীভাবে আপনি কীভাবে ইনপুট গ্রহণযোগ্য তা জানতে পারবেন? এর অর্থ হল, আপনার ক্লায়েন্টের যদি পূর্বের জ্ঞান না থাকে তবে আপনি কীভাবে "উপাম" এর শব্দার্থকে সংজ্ঞায়িত করবেন? আপনি OWL এর মতো কিছু প্রয়োজনের অঞ্চলে প্রবেশ শুরু করছেন ।

আমি মনে করি আপনার ক্লায়েন্টরা সুপরিচিত মাইম-প্রকারের শব্দার্থবিজ্ঞান বোঝার আশা করা আরও বাস্তব; উদাহরণস্বরূপ, লোকদের জন্য "পাঠ্য / ভিসার্ড" বলুন।


আমি মনে করি বিষয়বস্তুর ধরণের ব্যবহার হ'ল উপায়; আমি সহজেই আমার অ্যাপ্লিকেশনটি ব্যবহার application/atomapp+xmlকরতে পরিবর্তন করতে এবং এটি ইতিমধ্যে এই ফর্ম্যাটটি উপলব্ধ সমস্ত ক্লায়েন্টদের জন্য উপলব্ধ করে তুলতে পারি। এটি ব্যবহারিক সমাধান করার জন্য সেখানে যথেষ্ট সুপরিচিত সামগ্রী রয়েছে।
পল টার্নার

আমি মনে করি @ স্পোইকের মন্তব্যটি অন্য অর্ধেক সমস্যার একটি মার্জিত REST-Iian পদ্ধতির; এমনকি যদি ক্লায়েন্ট জেনে থাকে (উদাহরণস্বরূপ) কোনও ব্যবহারকারীকে ভিকার্ড হিসাবে উপস্থাপন করা হয়, তবুও এটি অনুসন্ধানের জন্য ব্যবহারকারীর বৈশিষ্ট্যগুলির সাবসেটটি উপলব্ধ কিনা তা এখনও জানতে হবে।
স্টিফেন জে অ্যান্ডারসন

4

আপনি "WADL" এর মাধ্যমে আপনার পরিষেবাগুলিতে বিশদ প্রকাশ করতে পারেন

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

এটি alচ্ছিক এবং প্রতিটি ব্যাকএন্ডের আরএসটি টেকনো এটি সমর্থন করে না। জ্যাক্সি, জ্যাক্স-আরএসের "অফিসিয়াল" জাভা বাস্তবায়ন, এটি উদাহরণস্বরূপ সমর্থন করে - এটি আপনার জন্য স্বয়ংক্রিয়ভাবে তৈরি করা যেতে পারে।

এটি ব্যবহার করা দেখতে যদিও এটি বেশ বিরল।

আমি এটি ব্যবহার করে বড়দের জানি না। সাধারণভাবে আপনার কাছে একটি ওয়েব পৃষ্ঠা রয়েছে যা এপিআই বর্ণনা করে।


1
সিএক্সএফ হ'ল আরেকটি বড় জাভা জ্যাকএক্স-আরএস বাস্তবায়ন যা ডাব্লুএডিএল সমর্থন করে এবং আপনি এখন বেশ কয়েকটি আকর্ষণীয় তৃতীয় পক্ষের ডাব্লুএইচডিএল গ্রাহকরাও দেখতে শুরু করেছেন।
ডোনাল ফেলো

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