কোন সিটিইউডি পদ্ধতির সাথে কোন এইচটিটিপি পদ্ধতি মেলে?


213

RESTful স্টাইল প্রোগ্রামিংয়ে আমাদের HTTP পদ্ধতিগুলি আমাদের বিল্ডিং ব্লক হিসাবে ব্যবহার করা উচিত। ক্লাসিক CRUD পদ্ধতিগুলির সাথে কোন পদ্ধতিগুলি মেলে তবুও আমি কিছুটা বিভ্রান্ত GET / Read এবং মুছে ফেলুন / মুছুন যথেষ্ট সুস্পষ্ট।

তবে পুট / পোস্টের মধ্যে পার্থক্য কী? তারা কি তৈরি এবং আপডেটের সাথে একের সাথে মিলছে?

উত্তর:


298
Create = PUT with a new URI
         POST to a base URI returning a newly created URI
Read   = GET
Update = PUT with an existing URI
Delete = DELETE

PUT PUT এর সাথে ব্যবহৃত ইউআরআইয়ের অস্তিত্বের উপর নির্ভর করে তৈরি এবং আপডেট উভয়কে মানচিত্র করতে পারে।

তৈরি করতে মানচিত্র পোস্ট করুন।

সংশোধন: POST আপডেটে মানচিত্র করতে পারে যদিও এটি সাধারণত তৈরির জন্য ব্যবহৃত হয়। পোস্টও একটি আংশিক আপডেট হতে পারে তাই আমাদের প্রস্তাবিত প্যাচ পদ্ধতিটি প্রয়োজন নেই।


16
+1: আপনি পুটের মধ্যে যে পার্থক্যটি তৈরি করেন সেই সংস্থান তৈরি করার জন্য যাঁর নাম (ইউআরআই) ক্লায়েন্ট এবং POST দ্বারা নির্ধারিত হয়েছে এমন সংস্থান তৈরি করার জন্য যাঁর নামগুলি সার্ভারের দ্বারা নির্ধারিত important এ সম্পর্কে আলোচনার জন্য রিচার্ডসন এবং রুবির রেস্টলফুল ওয়েব পরিষেবাদি (ও'রেলি) দেখুন।
জিম ফেরানস

9
এবং যেহেতু পুট এবং ডিলিট এখনও ওয়েব ব্রাউজারগুলির দ্বারা সমর্থিত নয়, ইউআরআই পোস্ট করা হচ্ছে না এমন পদ্ধতি = পিউটি বা পদ্ধতি = ডিলেট করার মতো ক্যোয়ারী স্ট্রিং যুক্তি যুক্ত করে "ওভারলোড পোষ্ট" ঠিক মনে করা হয়।
জিম ফেরানস

2
চমৎকার বিশ্লেষণ করেছে jcalcote.wordpress.com/2008/10/16/…
বরিস ইভানোভ

13
@ জিমফেরানস পুট এবং ডিলিট এক্সএইচআর দিয়ে ঠিক ঠিক ওয়েব ব্রাউজারগুলি দ্বারা সমর্থিত। তবে, এইচটিএমএল ফর্মগুলির প্রসঙ্গে, এইচটিএমএল স্পেসিফিকেশন তাদের সমর্থন করে না তাই ব্রাউজারগুলিও তা করতে পারে না।
eis

3
সিআরইউডিতে কোনও চিঠিতে স্বতন্ত্রভাবে ম্যাপিং না করার সময়, অনেকগুলি REST ফ্রেমওয়ার্কগুলি GET / সত্তা / টাইপ সত্তার সত্তা তালিকাতে ব্যবহার করে । তাহলে GET / সত্তা / আইডি বিশেষ মিলে সত্তা পড়তে হবে আইডি
টোডিয়াস ঝো

49

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

কোনও পোষ্টের প্রামাণ্য বিবরণ হ'ল আপনি যখন কিছু কেনার প্রতিশ্রুতিবদ্ধ হন: এটি এমন একটি ক্রিয়া যা কেউ না জেনে পুনরাবৃত্তি করতে চায় না। বিপরীতে, অর্ডারটির জন্য প্রেরণের ঠিকানাটি আগেই PUT দিয়ে ঠিক করা যায়: আপনাকে 6 Anywhere Dr, Nowherevilleএকবার, দু'বার বা একশবার প্রেরণ করতে বলা হলেও তা বিবেচ্য নয় : এটি এখনও একই ঠিকানা। তার মানে কি এটি একটি আপডেট? হতে পারে… এটি কীভাবে আপনি ব্যাক-এন্ড লিখতে চান তার উপর নির্ভর করে। (নোট করুন যে ফলাফলগুলি একরকম নাও হতে পারে: রিসোর্সের উপস্থাপনার অংশ হিসাবে তারা শেষ বার PUT করলে আপনি ব্যবহারকারীকে পুনরায় রিপোর্ট করতে পারেন, যা নিশ্চিত করে যে পুনরাবৃত্ত পুটগুলি অভিন্ন ফলাফলের কারণ নয়, তবে ফলাফল এখনও থাকবে ক্রিয়ামূলক অর্থে "একই" হোন।)


1
ব্যবহারের ক্ষেত্রে POSTএবং এর জন্য এই পার্থক্যটি PUTএকটি আকর্ষণীয় এবং "উত্তরটি কোনটি তৈরি 'এবং কোনটি' আপডেট 'করা উচিত?" যে অনেক পরিষ্কার। তদুপরি, এপিআই বাস্তবায়নের ক্ষেত্রে এটি অনুসরণ করবে যে কোনও পুনরাবৃত্তিকে PUTনীরব নো-অপের সমতুল্য হওয়া উচিত, অন্যদিকে কোনও পুনরাবৃত্তিকে POSTব্যতিক্রম করতে পারে যদি ডেটা স্টোরের কিছু অংশ পাঠানো হয় তা অনন্য থাকার কথা মনে হয় যে অ্যাপ্লিকেশন ব্যাক।
জেরোবান্ডউইথথ

2
এই উত্তর এবং নীচের মন্তব্যটি একটি গুরুত্বপূর্ণ বিষয় উত্থাপন করে, যে সতর্কতাটি সিআরইউডি সমীকরণের সাথে HTTP আরএসটি শব্দার্থক শব্দগুলির সাথে (1to1) সমানভাবে প্রয়োগ করা উচিত। এটি কোনও ক্যানোনিকাল ম্যাপিং নয়।
মার্টিন স্পামার

35

আমি একই উত্তরটি অনুসন্ধান করছিলাম, আইবিএম যা বলছে তা এখানে। আইবিএম লিংক

POST            Creates a new resource.
GET             Retrieves a resource.
PUT             Updates an existing resource.
DELETE          Deletes a resource.

10

এখনই (২০১ () সর্বশেষতম HTTP ক্রিয়াগুলি হ'ল GET, পোস্ট, প্যাচ , পুট এবং মুছে ফেলুন

সংক্ষিপ্ত বিবরণ

  • HTTP পেতে - নির্বাচন / অনুরোধ
  • HTTP পুট - আপডেট
  • HTTP পোস্ট - INSERT / তৈরি করুন
  • এইচটিটিপি প্যাচ - যখন পুট টিং সম্পূর্ণ সংস্থার উপস্থাপনাটি জটিল হয় এবং আরও বেশি ব্যান্ডউইথ ব্যবহার করে, যেমন: যখন আপনাকে আংশিকভাবে একটি কলাম আপডেট করতে হবে
  • HTTP মোছা - মোছা

আশাকরি এটা সাহায্য করবে!

আপনি যদি REST এপিআইগুলি ডিজাইন করতে আগ্রহী হন তবে এটি হ'ল একটি অদৃশ্য পাঠ্য! ওয়েবসাইট অনলাইন সংস্করণ গিথুব সংগ্রহস্থল


1
ফেব্রুয়ারী '18-এ, সাবধান থাকবেন যে ক্লায়েন্ট এবং সার্ভার লাইব্রেরিতে PATCH পুরোপুরি প্রয়োগ করা হয়নি।
ডিজলি

ওহ ঠিক আছে ধন্যবাদ আমি দেখছি ... আপনি কি কোনও লিঙ্ক / রেফারেন্স পোস্ট করতে কিছু মনে করবেন তাই আমি দয়া করে একবার দেখতে পারি?
d1jhoni1b

9

স্টর্ম্পাথের সাথে এটির ব্যাখ্যা করার সাথে একটি দুর্দান্ত ইউটিউব ভিডিও আলাপ রয়েছে, URL টি ভিডিওর সঠিক অংশে চলে যাওয়া উচিত:

স্টর্ম্পাথ ইউটিউব ভিডিও

এটি এক ঘন্টা কথা বলার অপেক্ষা রাখে না তবে যদি আপনার একটি আরএসপি এপি নির্মাণে সময় বিনিয়োগের চিন্তাভাবনা করা হয় তবে খুব ইন্টারস্টিয়ারিং worth


7

এটি কংক্রিট পরিস্থিতির উপর নির্ভর করে .. তবে সাধারণভাবে:

উত্সটির একটি কংক্রিট ইউআরআই সহ একটি কংক্রিট সংস্থান আপডেট করুন বা পরিবর্তন করুন।

পোস্ট = প্রদত্ত ইউআরআই এর উত্সের অধীনে একটি নতুন সংস্থান তৈরি করুন ।

অর্থাত

একটি ব্লগ পোস্ট সম্পাদনা করুন:

পুট: / ব্লগ / এন্ট্রি / 1

একটি নতুন তৈরি করুন:

পোস্ট: / ব্লগ / এন্ট্রি

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

সিআরইউডি সিস্টেমগুলির জন্য সাধারণ বোঝা হ'ল জিইটি = অনুরোধ, পোষ্ট = তৈরি, পুট = আপডেট, ডিলেট = মুছুন


4

আরইএসটি-র বিল্ডিং ব্লকগুলি মূলত সংস্থানসমূহ (এবং ইউআরআই) এবং হাইপারমিডিয়া ia এই প্রসঙ্গে, GETসংস্থানটির প্রতিনিধিত্ব পাওয়ার SELECTউপায়টি (যা সত্যই সিআরইউডি শর্তে ম্যাপ করা যায় )।

তবে CRUD ক্রিয়াকলাপ এবং এইচটিটিপি ক্রিয়াগুলির মধ্যে একের পর এক ম্যাপিংয়ের আশা করা উচিত নয়। মধ্যে মূল পার্থক্য PUTএবং POSTতাদের idempotent সম্পত্তি সম্পর্কে। POSTআংশিক আপডেটের জন্য আরও সাধারণভাবে ব্যবহৃত হয়, যেমনটি PUTসাধারণত উত্সটির সম্পূর্ণ নতুন প্রতিনিধিত্ব প্রেরণ করে।

আমি এটি পড়ার পরামর্শ দেব:

HTTP- র স্পেসিফিকেশন সাইটেও হল:

পুট পদ্ধতিটি অনুরোধ করে যে বদ্ধ সত্তা সরবরাহ করা অনুরোধ-ইউআরআইয়ের অধীনে সংরক্ষণ করা উচিত।

[...]

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


3

সাধারণভাবে বলতে গেলে, আমি ব্যবহার করি এমন প্যাটার্নটি:

  • HTTP পেতে - নির্বাচন / অনুরোধ
  • HTTP পুট - আপডেট
  • HTTP পোস্ট - INSERT / তৈরি করুন
  • HTTP মোছা - মোছা

5
পুট এবং পোস্ট কোনওটি আপডেট বা তৈরির সাথে ঠিক মেলে না; পুটটি "সেট" (অর্থাত্, যেখানে আপনি আগেই উত্সের নামটি জানেন এবং ব্যবহারের জন্য মূল্য দিচ্ছেন) এবং পোস্টটি হ'ল অন্য কিছু। মূল বিষয়টি হ'ল আপনি যা করছেন তা আদর্শবান বা না তা নিয়ে চিন্তা করা।
ডোনাল ফেলো

1
মন্তব্যটিতে +1। দুজনের মধ্যে পরম ম্যাপিংয়ের অনুমান বিভ্রান্তিকর হতে পারে। কিছু ইউআরআই-তে এইচটিটিপি মুছে ফেলা অপারেশন, উদাহরণস্বরূপ কোনও সার্ভার সাইড রেকর্ডটি সহজেই সংশোধন করা (অর্থাৎ আপডেট করা) যাতে কোনও এইচটিটিপি জিইটি অপারেশন আর প্রতিনিধিত্ব করে না।
দাঁড়াও

4
পুট এবং পোস্ট কোনওটি আপডেট বা তৈরির সাথে ঠিক মেলে না । সত্য তবে এজে তিনি বর্ণনা করেছেন যে তিনি কী ধরণের ব্যবহার করেন described
পাযত্র Dobrogost

1

Symfony তার HTTP- র পদ্ধতি রাখার প্রকল্পের চেষ্টা টি ককটেলের পদ্ধতি, এবং আপ যোগদান তাদের তালিকা নিম্নরূপ তাদের সহযোগীদের:

  • সার্ভার থেকে উত্স পুনরুদ্ধার করুন
  • পোস্ট করুন সার্ভারে একটি সংস্থান তৈরি করুন
  • PUT সার্ভারে রিসোর্স আপডেট করুন
  • সার্ভার থেকে উত্স মুছুন

এটি লক্ষ করার মতো বিষয়, যেমন তারা এই পৃষ্ঠায় বলে, "বাস্তবে, অনেক আধুনিক ব্রাউজারগুলি পুট এবং ডিলেট পদ্ধতিগুলি সমর্থন করে না।"

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.