পোষ্ট, প্যাচ এবং পুট: পার্থক্য কী?

এবং কেন এটি গুরুত্বপূর্ণ?

আপনি যদি RESTful এপিআই ব্যবহার করেন বা তৈরি করেন তবে আপনি জিইটি এবং পোস্ট অনুরোধগুলি সম্পন্ন করতে পারেন। আপনি PUT অনুরোধ বিবেচনা করতে পারেন। আপনি যদি প্যাচ অনুরোধগুলির মুখোমুখি হয়ে থাকেন তবে আপনি নিজেকে জিজ্ঞাসা করতে পারেন এটি পোষ্ট বা পুট থেকে আলাদা কিনা। তিন ধরণের প্রশ্নাবলী সমস্ত জরিপ সংস্থার সাথে জড়িত, তবে সাদৃশ্যগুলি সেখান থেকে স্পষ্ট হতে শুরু করেছে। এখানে কয়েকটি গুরুত্বপূর্ণ পার্থক্য রয়েছে।

পোস্ট

পোষ্ট অনুরোধগুলি মূলত সার্ভারের নিয়ন্ত্রণ নিয়ন্ত্রণ করে, যা আপনাকে কীভাবে সংস্থান তৈরি হয় তা নির্দিষ্ট করতে দেয়। এটি হ'ল, সার্ভারটি অনুরোধের বডিটিতে কোন ক্ষেত্রগুলি গ্রহণ করতে হবে, কোন ফাইলের ধরণ (যদি থাকে), এবং ইউআরআই কী নতুন উত্সকে নির্দেশ করবে তা চয়ন করতে পারে। 2616 আরএফসি দ্বারা উল্লিখিত:

POST পদ্ধতি দ্বারা সম্পাদিত আসল ফাংশনটি সার্ভার দ্বারা নির্দিষ্ট করা হয় এবং সাধারণত অনুরোধ-ইউআরআইয়ের উপর নির্ভর করে।

সাধারণত এর অর্থ এই যে পিওএসটি অনুরোধগুলি এপিআই এর শেষ পয়েন্টে রাউট হয়।

পোস্ট অনুরোধগুলি alচ্ছিক। নিম্নলিখিত উদাহরণ বিবেচনা করুন। যদি আমরা একটি নতুন পোকেমন তৈরি করতে চান তবে আমরা এপিআই / পোকেক্সেক্স এপিআই এর শেষ পয়েন্টে একটি পোস্টের অনুরোধ পাঠাব (কেবলমাত্র লক্ষ্য করুন যে এটি আসল বিন্দু নয়)। আমরা কিছু প্রয়োজনীয় ক্ষেত্র পোস্ট করব: পোকেমন নাম, প্রকার, এবং ক্রিয়া ক্রম।

পোষ্ট / এপিআই / পোকেক্সেক্স HTTP / 1.1 হোস্ট: pokemon.com সামগ্রী প্রকার: অ্যাপ্লিকেশন / জেসন
id "আইডি": 981 "নাম": "অক্টোপাস", "টাইপ": "বরফ", "চলমান": ["দ্রুত আক্রমণ", "উত্সাহ"]}

আপনি কল্পনা করতে পারেন যে আপনি উপরোক্ত অনুরোধটি দুবার প্রেরণ করেছেন। আপনি যদি প্রথমবার একটি সফল প্রতিক্রিয়া পান তবে সার্ভারটি দ্বিতীয় ত্রুটি পাঠাতে পারে। সার্ভার সম্ভবত একই পোকেমনকে একই নাম রাখতে দেবে না। যদি সার্ভারটি সাফল্যের সাথে প্রতিক্রিয়া জানায়, দ্বিতীয় অনুরোধে তৈরি হওয়া উত্সটিতে আলাদা, অনন্য আইডি এবং / অথবা ইউআরআই থাকতে পারে।

PUT

একটি বিন্দুর পরিবর্তে PUT, উত্সটি আপডেট করার লক্ষ্য নির্ধারণ করে বা যেখানে নতুন উত্স তৈরি হবে। উভয় ক্ষেত্রেই, অনুরোধের অবজেক্টটিতে অবশ্যই সংস্থানটির সম্পূর্ণ উপস্থাপনা অন্তর্ভুক্ত করা উচিত।

পুট একটি alচ্ছিক অপারেশন। অনুরোধটি কোনও বিদ্যমান বা অ-বিদ্যমান সংস্থানটিতে ফরোয়ার্ড করা হোক না কেন, সার্ভারকে প্রতিটি পুট-এর পরে একই সামগ্রীর সাথে প্রতিক্রিয়া জানাতে হবে। উদাহরণস্বরূপ:

পুট / পোকডেক্স / ১১৩০.জসন এইচটিটিপি / ১.১ হোস্ট: পোকেমন.কম সামগ্রী সামগ্রী: অ্যাপ্লিকেশন / জেসন
id "আইডি": 130 "নাম": "গিরাদোস", "টাইপ": "জল", "চলমান": ["কাঁপানো," উত্সাহ "}

যদি ইউআরআই / পোকডেক্স / ১১৩০.জসনের উত্স ইতিমধ্যে বিদ্যমান থাকে তবে উত্সের সামগ্রীগুলি উপরের অনুরোধের বডি দ্বারা প্রতিস্থাপন করা হবে। যদি এটি বিদ্যমান না থাকে তবে একটি উত্স তৈরি করা হয় এবং এতে কোয়েরির বিষয়বস্তু রয়েছে। আমরা যতবার বার অনুরোধ প্রেরণ করি না কেন, সার্ভারকে অবশ্যই প্রতিবার একই কর্তৃত্বের সাথে প্রতিক্রিয়া জানাতে হবে এবং সংস্থানটি পরিবর্তিত হওয়া উচিত নয়।

তালি

প্যাচগুলি সম্ভবত অনুরোধগুলির মধ্যে সবচেয়ে ভুল বোঝাবুঝি। এটি তুলনামূলকভাবে নতুন (এটি আরএফসি ২০১০ তে লেখা হয়েছিল) এবং পোষ্ট বা পুট ব্যবহার করার সময় প্রায়শই ভুল এবং ভুলভাবে ব্যবহৃত হয়। প্যাচ অনুরোধ URL এর বিপরীতে, উত্সটি বিদ্যমান নেই।

প্যাচএইচএচ সম্পর্কে মনে রাখা সবচেয়ে গুরুত্বপূর্ণ বিষয়টি হ'ল অনুরোধটির অবজেক্টটি বিদ্যমান উত্সের অংশ বা সম্পূর্ণ উপস্থাপনা হওয়া উচিত নয়। আরএফসি 5789 পরিবর্তে কী পাঠাতে হবে তা ব্যাখ্যা করে:

একই সময়ে, PATCH এর সাথে একটি বদ্ধ অবজেক্টের মধ্যে নির্দেশাবলীর একটি সেট অন্তর্ভুক্ত রয়েছে যা সার্ভারে থাকা সংস্থানটিকে নতুন সংস্করণ প্রকাশের জন্য কীভাবে পরিবর্তন করতে হয় তা বর্ণনা করে।

এই নির্দেশাবলীর সেটটিকে "প্যাচ ডকুমেন্টেশন" বলা হয় এবং উত্সের ধরণ অনুসারে প্যাচচইড প্রদর্শিত হবে। জেএসএনের জন্য, কোনও সংস্থা জাসন প্যাচ নথি (বিষয়বস্তুর ধরণ: অ্যাপ্লিকেশন / জসন-প্যাচ + জসন) বা জেএসওন মার্জ প্যাচ নথি (বিষয়বস্তুর ধরণ: অ্যাপ্লিকেশন / মার্জ-প্যাচ + জসন) অন্তর্ভুক্ত করতে পারে।

যদিও JSON প্যাচ নথিটি JSON, এটি একটি নির্দিষ্ট ধরণের JSON। বিশেষত, জেএসএন প্যাচ নথিতে কমা-বিচ্ছিন্ন জেএসওএন অবজেক্ট অবশ্যই থাকতে হবে, যার প্রতিটিটিতে বৈধ অপারেশন ("অপ") এবং পাথ রয়েছে। উদাহরণস্বরূপ:

[{"ওপ": "সরান", "পথ": "/ এ / বি / সি"}, op "ওপ": "অ্যাড", "পাথ": "/ এ / বি / সি "," মান ": [" ফু "," বার "]}, {" অপ ":" স্যুইচ "," পথ ":" / এ / বি / সি "," মান ": 42}, { "op": "copy", "from": "/ a / b / c", "পাথ": "/ a / b / d"}, op "op": "অনুলিপি" , "থেকে": "/ এ / বি / ডি", "পাথ": "/ এ / বি / ই"}]

দস্তাবেজ বিধিনিষেধগুলি কীভাবে উত্স আপডেট করতে হবে সে সম্পর্কে স্পষ্ট নির্দেশাবলী সার্ভারকে দেয়।

কেন এটি গুরুত্বপূর্ণ?

এই পদ্ধতির বিভিন্ন ব্যবহার বুঝতে আপনাকে কার্যকর অ্যাপ্লিকেশন তৈরি করতে সহায়তা করতে পারে। উদাহরণস্বরূপ, অনেক হাজার লাইনের জেএসএন উত্স বিবেচনা করুন। যদি ক্লায়েন্ট উত্সটিতে একটি একক সারি আপডেট করার জন্য একটি PUT অনুরোধ ব্যবহার করে তবে সম্পূর্ণ উত্সটি সত্তায় অন্তর্ভুক্ত করতে হবে। সংস্থানটির পুরানো সংস্করণ আপডেট করা এড়াতে, ক্লায়েন্ট প্রথমে উত্সটিতে একটি জিইটি অনুরোধ প্রেরণ করতে পারে। হঠাৎ করেই, একটি একক লাইন পরিবর্তনের অর্থ একটি খুব বড় সংস্থানটি সার্ভার এবং ক্লায়েন্টের মধ্যে পৃথকভাবে তিনবার স্থানান্তরিত করতে হবে। PATCH বুঝতে প্রতিটি অনুরোধ এবং প্রতিক্রিয়াটির আকার হ্রাস করবে reduce

একক পোকেমনের জন্য জিইটি অনুরোধের পোকেপি প্রতিক্রিয়াতে প্রায় 10,000 জেএসএন সারি রয়েছে!

HTTP ওয়েব ভাষা হিসাবে কাজ করে কারণ এটি প্রমিত করা হয়েছে standard ক্লায়েন্ট এবং সার্ভারগুলি ইন্টারেক্ট করতে পারে কারণ তারা উভয়ই একই, মানক ভাষা ব্যবহার করে। সার্ভার যখন স্বীকৃত মানগুলি থেকে দূরে সরে যায়, তখন ব্যবহারকারীরা প্রোটোকলটির ব্যাখ্যা কীভাবে সার্ভার চয়ন করে তা দেখার জন্য অতিরিক্ত ডকুমেন্টেশন পড়তে সময় কাটাতে হবে। স্বীকৃত মান মেনে চলা নিশ্চিত করে যে সবাই একই ভাষাতে কথা বলতে থাকে।