আমি যখন এটি প্রয়োগ করার চেষ্টা করি তখন আমার মাথায় REST সংক্রান্ত বিরোধিতা সম্পর্কিত বেশ কয়েকটি ধারণা।
আমার কাছে একটি REST- ফুল ব্যাক-এন্ড এপিআই সিস্টেম রয়েছে যা ব্যবসার যুক্তি ধরে রাখে এবং ইউআই সরবরাহ করে এমন একটি ওয়েব অ্যাপ্লিকেশন। আরআরটি সম্পর্কে বিভিন্ন সংস্থান থেকে (বিশেষত, অনুশীলনে আরএসটি: হাইপারমিডিয়া এবং সিস্টেম আর্কিটেকচার ) আমি জানি যে আমার সত্তাগুলির কাঁচা শনাক্তকারীদের প্রকাশ করা উচিত নয়, বরং হাইপারলিঙ্কগুলি দিয়ে ফিরানো উচিত rel="self"
।
উদাহরণ বিবেচনা করুন। আরআরএসটি এপিআইয়ের এমন একটি সংস্থান রয়েছে যা কোনও ব্যক্তিকে ফিরে দেয়:
<Person>
<Links>
<Link rel="self" href="http://my.rest.api/api/person/1234"/>
</Links>
<Pets>
<Link rel="pet" href="http://my.rest.api/api/pet/678"/>
</Pets>
</Person>
ওয়েব অ্যাপ্লিকেশন নিয়ে সমস্যা দেখা দেয়। আসুন ধরে নেওয়া যাক এটি এমন কোনও পৃষ্ঠা ফেরত দেয় যা ব্রাউজারগুলিতে একটি হাইপারলিঙ্ক রয়েছে:
<body class="person">
<p>
<a href="http://my.web.app/pet/???????" />
</p>
</body>
href
গুণাবলীতে আমার কী রাখা উচিত ? যখন কোনও ব্যবহারকারী টার্গেট পৃষ্ঠা খুললে আমি কীভাবে ওয়েব অ্যাপ্লিকেশনটিতে API সত্ত্বার URL রাখব?
প্রয়োজনীয়তাগুলি বিরোধী বলে মনে হচ্ছে:
- হাইপারলিঙ্কটি
href
ওয়েব অ্যাপ্লিকেশনটির দিকে পরিচালিত করা উচিত কারণ এটি ইউআই হোস্টিং সিস্টেম href
সত্তা কিছু আইডি থাকা উচিত কারণ ওয়েব অ্যাপ্লিকেশন সত্তা মোকাবেলার যখন লক্ষ্য পৃষ্ঠা প্রর্দশিত সক্ষম হওয়া আবশ্যক- ওয়েব অ্যাপ্লিকেশনটি আরএসটি ইউআরএলগুলি বিশ্লেষণ / নির্মাণ করা উচিত নয়, কারণ এটি বিশ্রাম-সম্পূর্ণ নয়, উল্লিখিত বইটি বলে
ইউআরআইগুলি ভোক্তাদের কাছে অস্বচ্ছ হওয়া উচিত। কেবলমাত্র ইউআরআই সরবরাহকারীই কীভাবে এটি ব্যাখ্যা করতে এবং এটি কোনও উত্সে মানচিত্র করতে জানে।
সুতরাং, আমি শুধু নিতে না পারেন, 1234
কারণ একটি RESTful ক্লায়েন্ট আমি এটা সঙ্গে আচরণ করা উচিত যেমন যদি এটা ভালো কিছু ছিল এপিআই প্রতিক্রিয়া URL থেকে http://my.rest.api/api/AGRIDd~ryPQZ^$RjEL0j
। অন্যদিকে, আমাকে অবশ্যই এমন কিছু ইউআরএল দিতে হবে যা আমার ওয়েব অ্যাপ্লিকেশনটির দিকে নিয়ে যায় এবং অ্যাপ্লিকেশনটির পক্ষে কোনওরকমভাবে এপিআই এর মূল URL টি পুনরুদ্ধার করতে এবং এপিআইএল সংস্থানগুলি অ্যাক্সেস করতে সেই URL টি ব্যবহার করা যথেষ্ট।
সহজতম উপায়টি সম্ভবত সংস্থানগুলির API URLগুলি তাদের স্ট্রিং সনাক্তকারী হিসাবে ব্যবহার করছে using তবে ওয়েব পৃষ্ঠার ইউআরএলগুলি http://my.web.app/person/http%3A%2F%2Fmy.rest.api%2Fapi%2Fperson%2F1234
কুরুচিপূর্ণ।
এটি একটি ডেস্কটপ অ্যাপ্লিকেশন বা একক পৃষ্ঠার জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনটির পক্ষে বেশ সহজ বলে মনে হচ্ছে। যেহেতু তারা অবিচ্ছিন্নভাবে বাস করে, তাই অ্যাপ্লিকেশনটির জন্য তারা কেবল URL টি মেমরির মধ্যে পরিষেবা সামগ্রীর সাথে রাখতে পারে এবং প্রয়োজনে সেগুলি ব্যবহার করতে পারে।
একটি ওয়েব অ্যাপ্লিকেশন দিয়ে আমি বেশ কয়েকটি পদ্ধতির কল্পনা করতে পারি তবে সমস্তটি অদ্ভুত বলে মনে হচ্ছে:
- এপিআই ইউআরএলে হোস্টটি প্রতিস্থাপন করুন এবং কেবল ফলাফল রাখুন। বিশাল অবক্ষয়টি হ'ল এটির জন্য অ্যাপ্লিকেশনটি যে API টি উত্পন্ন করে তার অর্থ ওয়েব অ্যাপ্লিকেশনটির প্রয়োজন যা রাক্ষসী সংযোজন। তদুপরি, এটি আর বিশ্রামের নয়, কারণ আমার ওয়েব অ্যাপ্লিকেশন ইউআরএলগুলি ব্যাখ্যা করতে শুরু করে।
- লিঙ্কগুলির সাথে একসাথে REST এপিআইয়ের কাঁচা আইডিকে প্রকাশ করুন, ওয়েব অ্যাপ্লিকেশনটির ইউআরএলগুলি তৈরি করতে তাদের ব্যবহার করুন এবং তারপরে এপিআই-তে প্রয়োজনীয় সংস্থানগুলি সন্ধান করতে ওয়েব অ্যাপ্লিকেশন সার্ভারে আইডিগুলি ব্যবহার করুন। এটি আরও ভাল, তবে ওয়েব অ্যাপ্লিকেশন সার্ভারের পারফরম্যান্সকে প্রভাবিত করবে কারণ ব্রাউজারের কোনও অনুরোধ পরিচালনা করতে ওয়েব অ্যাপ্লিকেশনটিকে কোনও ফর্মের গেট-বাই-আইডি অনুরোধের একটি চেইন জারি করে REST পরিষেবা নেভিগেশনের মধ্য দিয়ে যেতে হবে। কিছুটা নেস্টেড রিসোর্সের জন্য এটি ব্যয়বহুল হতে পারে।
self
ওয়েব অ্যাপ সার্ভারে অবিচ্ছিন্ন (ডিবি?) ম্যাপিংয়ের মাধ্যমে এপিআই দ্বারা ফিরিয়ে নেওয়া সমস্ত ইউআরএল সংরক্ষণ করুন। তাদের জন্য কিছু আইডি তৈরি করুন, ওয়েব অ্যাপ্লিকেশন পৃষ্ঠা URL গুলি তৈরি করতে এবং REST পরিষেবা সংস্থার URL গুলি পেতে আইডিগুলি ব্যবহার করুন। অর্থাত আমি রক্ষাhttp://my.rest.api/pet/678
একটি নতুন কী বলো, সহ URL কোথাও3
, এবং ওয়েব পেজের URL জেনারেটhttp://my.web.app/pet/3
। এটি কোনও ধরণের HTTP ক্যাশে প্রয়োগের মতো দেখায়। আমি জানি না কেন, তবে এটি আমার কাছে অদ্ভুত বলে মনে হচ্ছে।
বা এর কি সমস্ত অর্থ হ'ল RESTful API গুলি ওয়েব অ্যাপ্লিকেশনগুলির ব্যাকেন্ড হিসাবে কাজ করতে পারে না?