একটি ওও মডেলের সাথে আরএসটি [এপিআই] কাঠামোর তুলনা করতে, আমি এই মিলগুলি দেখতে পাচ্ছি:
উভয়:
তথ্য ভিত্তিক হয়
- REST = সংস্থানসমূহ
- ওও = অবজেক্টস
তথ্য চারপাশে চারপাশের অপারেশন
- REST = আশেপাশে VERBS (পান, পোস্ট করুন ...) চারপাশে resources
- ওও = এনক্যাপসুলেশন দ্বারা অবজেক্টগুলির চারপাশে অপারেশন প্রচার করুন
যাইহোক, উদাহরণস্বরূপ ফোকাস প্যাটার্নটি প্রয়োগ করার চেষ্টা করার সময় ভাল ওও অনুশীলনগুলি সর্বদা আরএসটি এপিআইয়ের উপর দাঁড়ায় না: REST এ, সমস্ত অনুরোধগুলি পরিচালনা করতে আপনার কাছে 1 জন নিয়ামক নেই এবং আপনি অভ্যন্তরীণ বস্তুর জটিলতা আড়াল করবেন না।
বিপরীতে, আরইএসটি কমপক্ষে দুটি ফর্মের সাথে অন্য কোনও সংস্থার সাথে সমস্ত সম্পর্কের প্রকাশনা উত্সাহ দেয়:
রিসোর্স হায়ারার্কি সম্পর্কের মাধ্যমে (আইডি 43 এর একটি যোগাযোগ একটি ঠিকানা 453 দিয়ে গঠিত):
/api/contacts/43/addresses/453
একটি REST জসন প্রতিক্রিয়া লিঙ্কের মাধ্যমে:
>> GET /api/contacts/43 << HTTP Response { id: 43, ... addresses: [{ id: 453, ... }], links: [{ favoriteAddress: { id: 453 } }] }
ওও-তে ফিরে আসার জন্য, ফ্যাসাদ ডিজাইনের প্যাটার্নটি Low Coupling
কোনও অবজেক্টএ এবং এর ' অবজেক্টবি ক্লায়েন্ট ' এর মধ্যে এবং High Cohesion
এই অবজেক্টএ এবং এর অভ্যন্তরীণ অবজেক্ট কম্পোজিশনের ( অবজেক্টসি , অবজেক্টডি ) সম্মান করে । সঙ্গে objectA ইন্টারফেস, এই সীমা প্রভাব করার জন্য একটি ডেভেলপার অনুমতি objectB এর objectA অভ্যন্তরীণ পরিবর্তনগুলি (মধ্যে objectC এবং objectD ), যতদিন objectA API (অপারেশন) এখনো সম্মানিত করা হয়।
REST- তে ডেটা (সংস্থান), সম্পর্ক (লিঙ্ক) এবং আচরণ (ক্রিয়া) বিভিন্ন উপাদানগুলিতে বিস্ফোরিত হয় এবং ওয়েবে উপলব্ধ।
আরআরইএসটি দিয়ে বাজানো, আমার ক্লায়েন্ট এবং সার্ভারের মধ্যে কোড পরিবর্তনগুলিতে আমার সর্বদা প্রভাব থাকে: কারণ High Coupling
আমার Backbone.js
অনুরোধগুলির Low Cohesion
মধ্যে এবং সংস্থানগুলির মধ্যে।
আরইএসটি লিংক দ্বারা প্রচারিত Backbone.js javascript application
" আরইএসটি রিসোর্স এবং বৈশিষ্ট্যগুলি " আবিষ্কারের সাথে আমার চুক্তি কীভাবে করা যায় তা আমি কখনই বুঝতে পারি নি । আমি বুঝতে পারি যে ডাব্লুডাব্লুডাব্লিকে বোঝানো হয়েছে বহু সার্ভার দ্বারা পরিবেশন করা, এবং ওও উপাদানগুলি সেখানে বহু হোস্ট দ্বারা পরিবেশন করার জন্য বিস্ফোরিত হতে হয়েছিল, তবে একটি পৃষ্ঠার ঠিকানাগুলির সাথে একটি যোগাযোগ দেখানো "সংরক্ষণ" করার মতো একটি সাধারণ দৃশ্যের জন্য, আমি এখানে দিয়ে শেষ করছি:
GET /api/contacts/43?embed=(addresses) [save button pressed] PUT /api/contacts/43 PUT /api/contacts/43/addresses/453
যা আমাকে ব্রাউজার অ্যাপ্লিকেশনগুলিতে পারমাণবিক লেনদেনের দায়বদ্ধতা বাঁচানোর পদক্ষেপ নিতে পরিচালিত করে (যেহেতু দুটি সংস্থান পৃথকভাবে সম্বোধন করা যেতে পারে)।
এটিকে মনে রেখে, যদি আমি আমার উন্নয়নকে সহজ করতে না পারি (মুখের নকশার ধরণগুলি প্রযোজ্য নয়) এবং যদি আমি আমার ক্লায়েন্টের আরও জটিলতা নিয়ে আসি (লেনদেনের পারমাণবিক সংরক্ষণ পরিচালনা করি) তবে আরএসএসআল হওয়ার সুবিধা কোথায়?
PUT /api/contacts/43
অভ্যন্তরীণ বস্তুগুলিতে ক্যাসকেড আপডেট করার সাথে কী সমস্যা ? আমার মতো অনেকগুলি এপিআই তৈরি হয়েছিল (মাস্টার ইউআরএল "সম্পূর্ণ" পড়তে / তৈরি করে / আপডেট করে এবং উপ ইউআরএলগুলি টুকরোগুলি আপডেট করে)। কোনও পরিবর্তন প্রয়োজন নেই (পারফরম্যান্সের কারণে) যখন আপনি ঠিকানা আপডেট না করেন কেবল তা নিশ্চিত করুন।