কোন সম্মেলনের মাধ্যমে কোন রিস্ট পুট / পোস্ট / ডিলিট কলগুলি ফিরে আসতে হবে?


153
  1. "REST মতাদর্শ" অনুসারে PUT / POST / DELETE অনুরোধের জন্য প্রতিক্রিয়া সংস্থায় কী থাকতে হবে?

  2. রিটার্ন কোড সম্পর্কে কি? কি HTTP_OKযথেষ্ট?

  3. এ জাতীয় সম্মেলনের কারণ কী?

আমি পোস্ট / পুট পার্থক্য বর্ণনা করে একটি ভাল পোস্ট পেয়েছি: পোষ্ট বনাম পুট কিন্তু এটি এখনও আমার প্রশ্নের উত্তর দেয় না।

উত্তর:


130

উল্টাপাল্টা ক্ষমা করুন, তবে আপনি যদি HTTP- র মাধ্যমে বিশ্রাম নিচ্ছেন তবে আরএফসি 7231 GET, PUT, POST এবং DELETE থেকে ঠিক কী আচরণ প্রত্যাশিত তা বর্ণনা করে।

আপডেট (জুলাই 3 '14):
এইচটিটিপি স্পষ্ট ইচ্ছাকৃতভাবে পোস্ট বা ডিলেট থেকে কী ফিরে আসে তা নির্ধারণ করে না। বৈশিষ্টটি কেবল সংজ্ঞায়িত করা প্রয়োজন যা সংজ্ঞায়িত করে। বাকিগুলি বেছে নেওয়ার জন্য প্রয়োগকারীকে রেখে দেওয়া হয়।


9
@ টেক্সস্লেয়ার আমি খুশি যে আপনি ভেবেছিলেন না আমি কেবল ছদ্মবেশী হওয়ার চেষ্টা করছিলাম। অনেকের মনে হয় যে এইচটিটিপি পদ্ধতিগুলির শীর্ষে REST সংযোজন প্রয়োজনীয়তা যুক্ত করে। যাই হোক, এটা ব্যপার না। অতিরিক্ত বাধা রয়েছে তবে তারা HTTP পদ্ধতিগুলির আচরণে সত্যিকার অর্থে প্রভাবিত করে না। আরএফসি 2616 অবশ্যই অনুসরণ করার গাইড is
ড্যারেল মিলার

4
আমি লিঙ্কটি প্রশংসা করি। :) এটি আমাকে থামিয়ে এবং আমি যে সরঞ্জামটি ব্যবহার করছি সে সম্পর্কে চিন্তাভাবনা করে। আপনার পোস্ট এবং আরএফসি পড়ার পরে, আমি নিজেকে রাতের বাকি অংশটি আরএফসির সাথে উল্লেখ করে দেখতে পেলাম। এটি প্রথমে এইচটিটিপি প্রক্রিয়া এবং বিশ্রাম প্রক্রিয়া দ্বিতীয় হিসাবে প্রক্রিয়াটি ভাবতে আমাকে সহায়তা করেছে। অনেক প্রশংসিত.
পেরি টিউ

4
@ পেরিটাইউ এখন আপনি এখানে সরঞ্জামগুলি দেখতে পারেন ietএইটিএফ.আর.জি.উইউজি / এইচটিপিবিস এবং বর্তমানে এইচটিটিপি অনুমানের সংশোধিত সংস্করণটি দেখতে পারেন। উপভোগ করুন!
ড্যারেল মিলার

12
হয়তো আমার আরও বেশি ঘুম দরকার, তবে আরপিএফ-এর মধ্যে ওপি যে সঠিক তথ্য চেয়েছিল তা আমি খুঁজে পেতে পারি না। পোস্ট বা ডিলিট প্রতিক্রিয়ার জন্য শরীরের কী হওয়া উচিত?
ক্যাম জ্যাকসন 12

9
ঠিক আছে, এটি কাদা হিসাবে পরিষ্কার। উত্তরে সম্ভবত আরও কিছু তথ্য সহায়ক হবে। বিশেষত, যখন সেই লিঙ্কটি মারা যায়।
ডগ মোলিনাক্স

25

সামগ্রিকভাবে, সম্মেলনগুলি হ'ল "মনে হয় আপনি কেবল ওয়েব পৃষ্ঠাগুলি সরবরাহ করছেন"।

একটি পুটের জন্য, আমি একই দৃষ্টিভঙ্গি ফিরিয়ে দেব যে আপনি যদি তাড়াতাড়ি একটি জিইটি করেন তবে আপনি পাবেন; এটির ফলে 200 হবে (ভাল, ধারনাটি অবশ্যই সাফল্য অর্জন করে)। একটি পোস্টের জন্য, আমি তৈরি সংস্থার পুনর্নির্দেশ করব (ধরে নিই যে আপনি কোনও ক্রিয়েশন অপারেশন করছেন; যদি না হয় তবে কেবল ফলাফলগুলি ফিরিয়ে দিন); একটি সফল তৈরির কোডটি একটি 201, যা 300 টি পরিসরে নয় এমন একটি পুনর্নির্দেশের জন্য সত্যিই একমাত্র এইচটিটিপি কোড।

একটি মোছা কী ফিরিয়ে দেবে সে সম্পর্কে আমি কখনই খুশি হইনি (আমার কোডটি বর্তমানে এইচটিটিপি 204 এবং এই ক্ষেত্রে একটি খালি শরীর তৈরি করে)।


1
রয়ে PUT, অনুরোধ আগমন পরবর্তী পৃষ্ঠায় একটি খারাপ অভ্যাস মত মনে হয় ফলে পৃষ্ঠাতে রিফ্রেশ যেহেতু আবার চালানো অনুরোধ কারণ হবে। পরিবর্তে, আমার কাছে, আপনি সিঙ্ক্রোনাস অনুরোধগুলির সাথে কাজ করছেন তা ধরে নিয়ে পুনর্নির্দেশ করা বোধগম্য।
লোবাতি

1
@ লাবতী, আমি মনে করি এটি নোট করা জরুরী যে একাধিক অভিন্ন PUT অনুরোধগুলি প্রেরণের একই PUT অনুরোধগুলির মধ্যে কেবল একটি প্রেরণের মতো একই ফলাফল হওয়া উচিত। সম্ভবত আপনি উত্থাপিত সমস্যাটি এখন উপরে বর্ণিত কি কম গুরুত্বপূর্ণ?
আইয়েন

3
@ সত্যিই নয়। সমস্যাটি হ'ল, যদি পরে অন্য কোনও কিছু রেকর্ডটি আপডেট করে তবে আপনি এটি আর একটি PUTঅনুরোধ প্রেরণ করতে চান না যাতে ডেটা উল্টে যায়। উদাহরণস্বরূপ, যদি দু'জন ব্যক্তি একই পৃষ্ঠায় রেফারেন্স করে, একটি আপডেট করে, অন্যটি একটি আপডেট করে, যদি প্রথম ব্যক্তি ফলাফলটি দেখতে সতেজ করে, এটি আসলে শেষ হয়ে যায় কারণ দ্বিতীয় ব্যক্তিটি তৈরি করার আগে জিনিসগুলিকে আবার ফিরিয়ে আনা হয় causing তাদের পরিবর্তন।
লোবাতি

"ওয়েবসাইটটির মতো মনে করুন" নিখুঁত, সুতরাং একটি মুছে ফেলা কিছু পরবর্তী সম্ভাব্য ক্রিয়াকলাপগুলির সাথে প্রতিক্রিয়া জানাতে পারে, যা আপনি কেন কোনও সংস্থান মুছে ফেলবেন তার চারপাশে "গল্প" এর উপর নির্ভর করে। এটি এজেন্টটিকে কিছুটা যৌক্তিক শুরু করার ক্রিয়া স্থানে নিয়ে যাওয়ার লিঙ্ক হতে পারে, বা এমন কোনও স্থিতি সংস্থানতেও পুনর্নির্দেশ করতে পারে যা মুছার (অর্ডার মোট) এর প্রভাব দেখায় এবং আরও লিঙ্কগুলি অন্তর্ভুক্ত করে।
লুক পুপলেট

3

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

সাফল্যটি HTTP_OK দ্বারা নির্দেশিত হতে পারে, হ্যাঁ।

আমি উপরে যা বলেছি তার মধ্যে কেবলমাত্র কঠোর এবং দ্রুত নিয়মটি হ'ল একটি ক্রিয়েটকে নতুন সংস্থানটির অবস্থানটি ফিরিয়ে দেওয়া উচিত। এটাই আমার কাছে বুদ্ধিমান মনে হয়; এটি সঠিক ধারণা দেয় যে ক্লায়েন্টকে নতুন আইটেমটি অ্যাক্সেস করতে সক্ষম হতে হবে।


2
আপনি আসলে পুট এবং পোস্ট মিশ্রিত করেছেন। POST তৈরি করার জন্য ব্যবহৃত হয়, PUT আপডেট করার জন্য এবং তৈরি করার জন্য ব্যবহৃত হয়। এটি উল্লেখ করাও যথার্থ যে PUST আদর্শহীন হওয়া উচিত যেখানে POST নেই।
স্টেভি

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

1

আরএফসি 7231 দ্বারা এটি কোনও বিষয় নয় এবং এটি খালি থাকতে পারে

আমরা প্রকল্পে জেসন এপিআই মানক ভিত্তিক সমাধানটি কীভাবে বাস্তবায়ন করি:

পোস্ট / পুট: ফলাফল হিসাবে আউটপুট অবজেক্ট বৈশিষ্ট্য (ফিল্ড ফিল্টার / সম্পর্ক একই প্রযোজ্য)

মুছুন: ডেটাতে কেবল নাল থাকে (এটির জন্য নিখোঁজ বস্তুর উপস্থাপনের জন্য)

স্ট্যান্ডার্ড মোছার জন্য স্থিতি: 200


0

আমি আপডেট এবং মুছার জন্য HTTP স্থিতি কোড থেকে আলফোনসো টাইেন্ডা প্রতিক্রিয়া পছন্দ করি ?

এখানে কিছু টিপস:

মুছে ফেলা

  • 200 (যদি আপনি প্রতিক্রিয়াতে কিছু অতিরিক্ত ডেটা প্রেরণ করতে চান) বা 204 (প্রস্তাবিত)

  • 202 অপারেশন মুছে ফেলা এখনও প্রতিশ্রুতিবদ্ধ হয় নি।

  • যদি মুছে ফেলার মতো কিছু না থাকে, 204 বা 404 ব্যবহার করুন (মুছে ফেলা অপারেশনটি আদর্শবান, ইতিমধ্যে মুছে ফেলা আইটেমটি মুছে ফেলা অপারেশন সফল , তাই আপনি 204 ফিরে আসতে পারেন , তবে এটি সত্য যে আদর্শবান্ধব অগত্যা একই প্রতিক্রিয়া বোঝায় না)

অন্যান্য ত্রুটি:

  • 400 খারাপ অনুরোধ ( ত্রুটিযুক্ত সিনট্যাক্স বা একটি খারাপ ক্যোয়ারী আশ্চর্যজনক তবে সম্ভব)।
  • 401 অননুমোদিত প্রমাণীকরণ ব্যর্থতা
  • 403 নিষিদ্ধ : অনুমোদন ব্যর্থতা বা অবৈধ অ্যাপ্লিকেশন আইডি।
  • 405 অনুমোদিত নয় । অবশ্যই।
  • 409 রিসোর্স সংঘাত জটিল সিস্টেমে সম্ভব হতে পারে।
  • আর 501 , 502 এরর ক্ষেত্রে।

PUT

আপনি যদি কোনও সংকলনের উপাদান আপডেট করে থাকেন

  • 200/204 উপরের মুছে ফেলার মতো একই কারণে।
  • 202 যদি অপারেশনটি এখনও চালু না করা হয়।

রেফারেন্সকৃত উপাদানটি বিদ্যমান নেই:

  • পুট 201 হতে পারে (যদি আপনি উপাদানটি তৈরি করেন কারণ এটি আপনার আচরণ)

  • 404 যদি আপনি পুটের মাধ্যমে উপাদান তৈরি করতে না চান।

  • ৪০০ টি খারাপ অনুরোধ (ডিলিটের ক্ষেত্রে ত্রুটিযুক্ত সিনট্যাক্স বা খারাপ কোয়েরি বেশি সাধারণ)।

  • 401 অননুমোদিত

  • 403 নিষিদ্ধ : প্রমাণীকরণ ব্যর্থতা বা অবৈধ অ্যাপ্লিকেশন আইডি।

  • 405 অনুমোদিত নয় । অবশ্যই।

  • 409 রিসোর্স সংঘাত জটিল সিস্টেমে যেমন মুছে ফেলা সম্ভব হতে পারে।

  • 422 অপ্রয়োজনীয় সত্তা এটি একটি "খারাপ অনুরোধ" (যেমন বিকৃত এক্সএমএল / জেএসএন) এবং অবৈধ ক্ষেত্রের মানগুলির মধ্যে পার্থক্য করতে সহায়তা করে

  • আর 501 , 502 এরর ক্ষেত্রে।

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