এখানে কিছু ভাল উত্তর রয়েছে তবে আমি নিশ্চিত নই যে তারা আপনাকে আপনার সহকর্মীদের বোঝাতে সহায়তা করবে। যেহেতু অনেকে উল্লেখ করেছেন, আপনি যা পরামর্শ দিচ্ছেন তা RESTful ডিজাইন থেকে দূরে সরে যাওয়া নয় এবং আমি মনে করি এটি আপনার প্রস্তাব সহ বোর্ডে আসার মূল বিষয়।
REST আপনার API কেবল ডেটা সঞ্চয় এবং পুনরুদ্ধারের অনুমতি দেয় তা নিশ্চিত করার বিষয়ে নয় । বরং এটি মডেলিংয়ের সাথে সম্পদ হিসাবে ক্রিয়াকলাপ । আপনার এপিআই এর নেওয়া পদক্ষেপগুলি সক্ষম করা উচিত (এটি সর্বোপরি একটি অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস)। প্রশ্নটি কীভাবে এই ক্রিয়াগুলি মডেল করবেন।
একটি পদ নিয়ে আসার পরিবর্তে উদাহরণগুলি সম্ভবত আপনার সহকর্মীদের কাছে এটি ব্যাখ্যা করার সর্বোত্তম উপায় । তারা এখন এটি কীভাবে করছে, কী কারণে সমস্যা সৃষ্টি করে, সমস্যা সমাধান করে এমন একটি সমাধান এবং কীভাবে এটি এখনও বিশ্রামপ্রাপ্ত show
আসুন আপনার গ্রাহক অবজেক্টটি দেখুন।
সমস্যা:
ইউআই কোনও গ্রাহক পোস্ট করে, তবে পরবর্তী সারণীগুলি এখনও আপডেট হয়নি। যদি আপনার ইউআই কোডের কোনও ত্রুটির কারণে (বা ব্রাউজার প্লাগইন ইত্যাদির অপব্যবহার করে) পরবর্তী কোনও কল ব্যর্থ হয়? এখন আপনার ডেটা অসঙ্গতিপূর্ণ অবস্থায় রয়েছে। এমনকি এটি এমন একটি রাষ্ট্রও হতে পারে যা আপনার এপিআই বা ইউআইয়ের অন্যান্য অংশগুলিকে ভেঙে দেয়, এটি কেবল অবৈধ তা উল্লেখ না করে। আপনি কিভাবে পুনরুদ্ধার করবেন? এটি যে কোনও কিছু ভঙ্গ করবে না তা নিশ্চিত করার জন্য আপনাকে প্রতিটি সম্ভাব্য অবস্থার জন্য পরীক্ষা করতে হবে, তবে কী কী সম্ভব তা জানা শক্ত to
সমাধান:
গ্রাহক তৈরি করতে একটি এপিআই শেষ পয়েন্ট করুন। আপনি জানেন যে আপনার "/ গ্রাহক / তৈরি" বা "/ ক্রিয়েট-গ্রাহক" এন্ডপয়েন্ট রয়েছে না, কারণ তৈরি করা একটি ক্রিয়া এবং REST লঙ্ঘন করবে। সুতরাং এটি নামকরণ। "/ গ্রাহক-সৃষ্টি" কাজ করতে পারে। এখন আপনি যখন আপনার গ্রাহকক্রিয়েশন অবজেক্টটি পোস্ট করবেন, এটি গ্রাহককে পুরোপুরি তৈরি করার জন্য প্রয়োজনীয় সমস্ত ক্ষেত্র প্রেরণ করবে। শেষের অবস্থানটি নিশ্চিত করবে যে ডেটা সম্পূর্ণ এবং বৈধ (400 বা কিছু ফেরত দেওয়া যদি এটি বৈধতা ব্যর্থ করে), এবং উদাহরণস্বরূপ, একক ডিবি লেনদেনে সমস্ত কিছু চালিয়ে যেতে পারে।
আপনার যদি জিইটি / গ্রাহক অবজেক্টগুলির একটি শেষ পয়েন্ট দরকার হয় তবে তা ঠিক। আপনি উভয় থাকতে পারে। কৌশলটি হ'ল এন্ডপয়েন্টগুলি তৈরি করা যা গ্রাহকদের প্রয়োজনের পরিবেশন করে।
সুবিধাদি:
- আপনি গ্যারান্টি দিচ্ছেন যে আপনার খারাপ অবস্থা শেষ হবে না
- এটি যদি ইউআই ডিভাসগুলিতে অনুরোধ, বৈধতা সম্পর্কিত উদ্বেগ ইত্যাদির ক্রম "জানতে" না হয় তবে এটি আসলে সহজ
- এটি কোনও নেটওয়ার্কের অনুরোধের বিলম্বকে হ্রাস করে কোনও এপিআই-এর চ্যাটি নয়
- পরিস্থিতিগুলি পরীক্ষা করা এবং ধারণাটি তৈরি করা সহজ (ইউআই থেকে প্রাপ্ত ডেটা টুকরো টুকরো টুকরো টুকরো টুকরো অনুরোধের মধ্যে ছড়িয়ে যায় না, যার মধ্যে কিছু ব্যর্থ হতে পারে)
- এটি ব্যবসায়িক যুক্তির আরও ভাল এনক্যাপসুলেশন করতে দেয়
- সাধারণত সুরক্ষা সহজ করে তোলে (কারণ ইউআই-তে ব্যবসায় এবং অর্কেস্ট্রেশন যুক্তি ব্যবহারকারীদের দ্বারা পরিবর্তন করা যেতে পারে)
- সম্ভবত যুক্তির সদৃশতা হ্রাস পাবে (আপনার একই জাতীয় ডেটাতে অ্যাক্সেস দেয় এমন 2+ এপিআই-এর চেয়ে বেশি আপনার কোনও API এর 2+ গ্রাহক থাকবেন)
- এখনও 100% রিস্টফুল
অসুবিধা:
- ব্যাকএন্ড ডেভের পক্ষে এটি সম্ভবত আরও কাজ (তবে এটি দীর্ঘকালীন নাও হতে পারে)
লোকেরা এই দৃষ্টান্তটি বুঝতে এবং যদি তারা এটি ব্যবহার না করে তবে এটি সম্পর্কে কী ভাল তা বুঝতে অসুবিধা হতে পারে। আশা করি আপনি নিজের কোড থেকে একটি উদাহরণ ব্যবহার করে তাদের দেখতে সহায়তা করতে পারেন।
আমার নিজের অভিজ্ঞতাটি হ'ল একবার আমার দলের ডেভসরা এই কৌশলটি প্রয়োগ করতে শুরু করলে তারা প্রায় তত্ক্ষণাত সুবিধাগুলি দেখেছিল।
আরও অধ্যয়ন:
চিন্তাভাবনা থেকে প্রাপ্ত এই নিবন্ধটি আমাকে বাস্তবের উদাহরণ হিসাবে ব্যবহারিক জিনিস হিসাবে মডেলিংয়ের ক্রিয়া সম্পর্কে ধারণা পেতে সহায়তা করেছে: https://www.thoughtworks.com/insights/blog/rest-api-design-resource-modeling
আমি সিকিউআরএস এবং ইভেন্ট সোর্সিং পড়ার পরামর্শ দেব কারণ তারা এই ধরণের জিনিসটির সাথে অবশ্যই উদ্বিগ্ন (যেমন প্রকৃত দৃ API়তা যুক্তি থেকে আপনার API কে তালাক দেওয়া)। আমি জানি না যে আপনার সহকর্মীরা এই ধরণের জিনিসটি পড়তে কতটা আগ্রহী হবে তবে এটি আপনাকে আরও স্বচ্ছতা দিতে পারে এবং তাদের এটি ব্যাখ্যা করতে আপনাকে সহায়তা করতে পারে।