আইডেম শক্তি
আরএফসি অনুসরণ করে, একটি পুটকে সম্পদে সম্পূর্ণ বস্তু সরবরাহ করতে হবে। এর মূল কারণ, পুটটি আদর্শবান হওয়া উচিত। এর অর্থ একটি অনুরোধ, যা পুনরাবৃত্তি হয় তা সার্ভারে একই ফলাফলের জন্য মূল্যায়ন করা উচিত।
আপনি যদি আংশিক আপডেটের অনুমতি দেন তবে এটি আর আদর্শ-শক্তিমান হতে পারে না। আপনার যদি দুটি ক্লায়েন্ট থাকে ক্লায়েন্ট এ এবং বি, তারপরে নিম্নলিখিত দৃশ্যের বিবর্তন ঘটতে পারে:
ক্লায়েন্ট এ রিসোর্স ইমেজ থেকে একটি ছবি পেয়েছে। এটিতে চিত্রটির একটি বিবরণ রয়েছে যা এখনও বৈধ। ক্লায়েন্ট বি একটি নতুন চিত্র রাখে এবং সেই অনুযায়ী বিবরণটি আপডেট করুন। ছবি বদলে গেছে। ক্লায়েন্ট এ দেখেন, তাকে বিবরণ পরিবর্তন করতে হবে না, কারণ এটি তাঁর ইচ্ছা অনুযায়ী এবং কেবল চিত্রটি রাখেন put
এটি কোনও অসঙ্গতি সৃষ্টি করবে, ছবিটির ভুল মেটাডাটা যুক্ত আছে!
আরও বিরক্তিকর হ'ল যে কোনও মধ্যস্থতাকারী অনুরোধটি পুনরাবৃত্তি করতে পারে। ক্ষেত্রে এটি কোনওভাবে সিদ্ধান্ত নেয় পুট ব্যর্থ হয়েছে।
PUT এর অর্থ পরিবর্তন করা যায় না (যদিও আপনি এটির অপব্যবহার করতে পারেন)।
অন্যান্য অপশন
ভাগ্যক্রমে অন্য একটি বিকল্প আছে, এটি প্যাচ প্যাচচ হ'ল এমন একটি পদ্ধতি যা আপনাকে কোনও কাঠামো আংশিকভাবে আপডেট করতে দেয়। আপনি কেবল একটি আংশিক কাঠামো প্রেরণ করতে পারেন। সাধারণ অ্যাপ্লিকেশনগুলির জন্য, এটি ঠিক আছে। এই পদ্ধতিটি আদর্শ শক্তিশালী হওয়ার নিশ্চয়তা নেই। ক্লায়েন্টের নিম্নলিখিত ফর্মটিতে একটি অনুরোধ প্রেরণ করা উচিত:
PATCH /file.txt HTTP/1.1
Host: www.example.com
Content-Type: application/example
If-Match: "e0023aa4e"
Content-Length: 20
{fielda: 1, fieldc: 2}
এবং সার্ভারটি পতাকাটির সাফল্যে 204 (কোনও সামগ্রী নেই) দিয়ে জবাব দিতে পারে। ত্রুটিতে আপনি কাঠামোর একটি অংশ আপডেট করতে পারবেন না। প্যাচচ পদ্ধতিটি পারমাণবিক।
এই পদ্ধতির অসুবিধাটি হ'ল, সমস্ত ব্রাউজারগুলি এটি সমর্থন করে না তবে এটি একটি আরএসটি-পরিষেবাতে সর্বাধিক প্রাকৃতিক বিকল্প।
প্যাচ অনুরোধ উদাহরণ:
http://tools.ietf.org/html/rfc5789#section-2.1
জেসন প্যাচিং
Json বিকল্পটি বেশ বিস্তৃত এবং একটি আকর্ষণীয় বিকল্প বলে মনে হচ্ছে। তবে তৃতীয় পক্ষের জন্য এটি কার্যকর করা কঠিন হতে পারে। আপনার ব্যবহারকারী বেসটি এটি পরিচালনা করতে পারে কিনা তা আপনাকে সিদ্ধান্ত নিতে হবে।
এটি কিছুটা বিশৃঙ্খলাযুক্ত কারণ আপনার একটি ছোট দোভাষী তৈরি করতে হবে যা কমান্ডগুলিকে আংশিক কাঠামোতে রূপান্তর করে, যা আপনি আপনার মডেল আপডেট করার জন্য ব্যবহার করতে যাচ্ছেন। প্রদত্ত আদেশগুলি অর্থবোধ করে কিনা তা এই দোভাষীকেও পরীক্ষা করা উচিত। কিছু কমান্ড একে অপরের বাতিল। (ফিল্ডা লিখুন, ফিল্ডা মুছুন)। আমি মনে করি আপনি তার / তার পক্ষ থেকে ডিবাগের সময় সীমাবদ্ধ করতে ক্লায়েন্টকে এটি আবার রিপোর্ট করতে চান।
তবে আপনার যদি সময় থাকে তবে এটি সত্যিই মার্জিত সমাধান। আপনার অবশ্যই অবশ্যই ক্ষেত্রগুলি বৈধ হওয়া উচিত। আপনি REST মডেলটিতে থাকতে প্যাচ পদ্ধতির সাথে এটি একত্রিত করতে পারেন। তবে আমি মনে করি পোষ্টটি এখানে গ্রহণযোগ্য হবে।
খারাপ হচ্ছে
আপনি যদি পিটি বিকল্পের সাথে যাওয়ার সিদ্ধান্ত নেন তবে এটি কিছুটা ঝুঁকিপূর্ণ। তারপরে আপনার কমপক্ষে ত্রুটিটি বাতিল করা উচিত নয়। ব্যবহারকারীর একটি নির্দিষ্ট প্রত্যাশা রয়েছে (ডেটা আপডেট হবে) এবং আপনি যদি এটি ভঙ্গ করেন তবে আপনি কিছু বিকাশকারীকে একটি ভাল সময় দেবেন না।
আপনি পিছনে পতাকাঙ্কিত করার জন্য চয়ন করতে পারেন: 409 সংঘাত বা একটি 403 নিষিদ্ধ। এটি নির্ভর করে আপনি আপডেট প্রক্রিয়াটি কীভাবে দেখছেন। আপনি যদি এটিকে নিয়মের সেট (সিস্টেমকেন্দ্রিক) হিসাবে দেখেন তবে সংঘাত আরও ভাল হবে ic কিছু মত, এই ক্ষেত্রগুলি আপডেটযোগ্য নয়। (নিয়মের সাথে বিরোধে) যদি আপনি এটিকে কোনও অনুমোদনের সমস্যা (ব্যবহারকারীকেন্দ্রিক) হিসাবে দেখেন তবে আপনার নিষিদ্ধ হওয়া উচিত। সহ: আপনি এই ক্ষেত্রগুলি পরিবর্তন করার জন্য অনুমোদিত নন।
আপনার এখনও ব্যবহারকারীদের সমস্ত সংশোধনযোগ্য ক্ষেত্র প্রেরণে বাধ্য করা উচিত।
এটি প্রয়োগের একটি যুক্তিসঙ্গত বিকল্প হ'ল এটি একটি সাব-রিসোর্সে সেট করা, যা কেবলমাত্র পরিবর্তিতযোগ্য ডেটা সরবরাহ করে।
নিজের মতামত
ব্যক্তিগত প্যাচচ মডেলের জন্য ব্যক্তিগতভাবে আমি যেতে (যদি আপনাকে ব্রাউজারগুলির সাথে কাজ না করতে হয়) এবং পরে এটি জেএসএন প্যাচ প্রসেসরের সাহায্যে প্রসারিত করতে পারি। মাইম টাইপগুলিতে পার্থক্য করে এটি করা যেতে পারে: মাইম টাইপ জসন প্যাচ:
আবেদন / JSON-প্যাচ
এবং জসন: অ্যাপ্লিকেশন / জসন-প্যাচ
এটিকে দুটি পর্যায়ে কার্যকর করা সহজ করে তোলে।