বৈধতা ব্যর্থতার জন্য একটি REST এপিআই পরিষেবা দিয়ে ফেরত দিতে উপযুক্ত HTTP স্থিতি কোড কী?


394

আমি যখনই আমার জ্যাঙ্গো / পিস্টন ভিত্তিক আরএসটি এপিআই অ্যাপ্লিকেশনটিতে কোনও বৈধতা ব্যর্থতার সম্মুখীন হই তখন আমি 401 অননুমোদিত ফিরে আসছি । কটাক্ষপাত ছিল রয়ে HTTP স্থিতি কোড রেজিস্ট্রি আমি বিশ্বাস করছি না যে এটি কোনো বৈধতা ব্যর্থতার জন্য একটি যথাযথ কোড, কাইটটালাইব কি মত?

  • 400 খারাপ অনুরোধ
  • 401 অননুমোদিত
  • 403 নিষিদ্ধ
  • 405 পদ্ধতি অনুমোদিত নয়
  • 406 গ্রহণযোগ্য নয়
  • 412 পূর্বশর্ত ব্যর্থ হয়েছে
  • 417 প্রত্যাশা ব্যর্থ হয়েছে
  • 422 অপ্রয়োজনীয় সত্তা
  • 424 ব্যর্থতা নির্ভরতা

আপডেট : "বৈধকরণ ব্যর্থতা" এর অর্থ একটি অ্যাপ্লিকেশন স্তরের ডেটা বৈধতা ব্যর্থতা, অর্থাৎ ভুলভাবে নির্দিষ্ট তারিখের সময়, বোগাস ইমেল ঠিকানা ইত্যাদি etc.


2
এই উত্তরটি দেখুন: stackoverflow.com/a/2657624/221612
কেনি মায়ার

3
জিমের উত্তরটি এখন নীচে যেমন আছে তেমনই কেনির লিঙ্কটি কোড ৪২২ এর পরামর্শ দেয় । # দ্যমোর ইউকনুন # সেভিং ইউএল ক্লিক
রাফিন

আমি 401 আরও স্পষ্ট মনে করি।
17:38

উত্তর:


298

যদি "বৈধতা ব্যর্থতা" এর অর্থ হল যে অনুরোধটিতে কিছু ক্লায়েন্ট ত্রুটি রয়েছে, তবে HTTP 400 (খারাপ অনুরোধ) ব্যবহার করুন। উদাহরণস্বরূপ, যদি ইউআরআই-এর কোনও আইএসও -8601 তারিখ থাকার কথা এবং আপনি যদি এটি দেখতে পান যে এটি ভুল ফর্ম্যাটে রয়েছে বা 31 ফেব্রুয়ারি উল্লেখ করেছেন, তবে আপনি একটি এইচটিটিপি 400 ফিরিয়ে আনবেন would যদি আপনি কোনও সত্তা সংস্থায় সুগঠিত এক্সএমএল আশা করেন এবং এটি পার্স করতে ব্যর্থ।

(1/2016): গত পাঁচ বছর ধরে অম্রো এর আরো নির্দিষ্ট HTTP- র 422 (Unprocessable সত্তা) উদাহরণস্বরূপ তার ব্যবহারের জন্য HTTP- র 400 দেখার জন্য একটি অত্যন্ত যুক্তিসঙ্গত বিকল্প হয়ে উঠেছে তাদেরকে JSON এপিআই । তবে মনে রাখবেন যে এইচটিটিপি 422 এটিকে HTTP 1.1, আরএফসি -7231 এ তৈরি করে নি

রিচার্ডসন এবং রুবির RESTful ওয়েব পরিষেবাদিতে বিভিন্ন HTTP প্রতিক্রিয়া কোডগুলি কখন ব্যবহার করবেন সে সম্পর্কে একটি খুব সহায়ক পরিশিষ্ট রয়েছে। তারা বলে:

400 ("খারাপ অনুরোধ")
গুরুত্ব: উচ্চ।
এটি অন্য জেনারেল ক্লায়েন্ট-পার্শ্ব ত্রুটি স্থিতি, অন্য 4XX ত্রুটি কোড উপযুক্ত না হলে ব্যবহৃত হয়। এটি সাধারণত ব্যবহৃত হয় যখন ক্লায়েন্ট একটি পুট বা পোষ্ট অনুরোধের সাথে একটি উপস্থাপনা জমা দেয় এবং উপস্থাপনাটি সঠিক ফর্ম্যাটে থাকে, তবে এটি কোনও অর্থ দেয় না। (পৃষ্ঠা 381)

এবং:

401 ("অননুমোদিত")
গুরুত্ব: উচ্চ।
ক্লায়েন্ট যথাযথ প্রমাণীকরণের শংসাপত্রগুলি সরবরাহ না করে কোনও সুরক্ষিত সংস্থার উপর পরিচালনার চেষ্টা করেছিল। এটি ভুল শংসাপত্রগুলি প্রদান করেছে বা কোনওটিই নয়। শংসাপত্রগুলি একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড, একটি এপিআই কী, বা একটি প্রমাণীকরণ টোকেন question প্রশ্নে থাকা পরিষেবাটি যা আশা করে। ক্লায়েন্টের পক্ষে ইউআরআইয়ের জন্য একটি অনুরোধ করা এবং একটি 401 স্বীকার করা সাধারণ কারণ এটি জানে যে কী ধরনের শংসাপত্রগুলি প্রেরণ করা যায় এবং কোন ফর্ম্যাটে। [...]


3
তবে সম্ভবত যদি ইউআরআই ফর্ম্যাটটি অবৈধ হয় তবে 404 আরও বেশি উপযুক্ত।
মনু

11
@ রাইরাইটের বক্তব্য অনুসারে, আমিও মনে করি যে বৈধতা ত্রুটির জন্য 422 ভাল।
প্যান্টিও

11
আমি বলব এটি ভুল। 400 টির অনুরোধটি যখন অনুরোধটির সাথে সিন্টেক্সিকভাবে কিছু ভুল হয় তখন ব্যবহৃত হয়। আমি বলব যে পুনর্লিখনটি অনুরোধের বিষয়বস্তু সম্পর্কে 422 সুপারিশ করার ক্ষেত্রে ঠিক ।
স্টিজন ডি উইট

3
@ কেনজি হ্যাঁ, 401 ("অননুমোদিত"): "এটি ভুল প্রমাণপত্রাদি সরবরাহ করতে পারে ..." এর অর্থ ভুল ব্যবহারকারী এবং / অথবা পাসওয়ার্ড।
রাজ্জিনটাউন

4
@ জিমফেরানস 400 টি ত্রুটি যেখানে দেওয়া সিনট্যাক্সটি ভুল for 401 ত্রুটিগুলি বিশেষত যদি আমি এমন কোনও পৃষ্ঠাতে অ্যাক্সেস করার চেষ্টা করছি যা অ্যাক্সেস করার জন্য আমার লগ ইন করতে হবে এবং আমি লগইন করছি না। যেখানে সিনট্যাক্সটি সঠিক সেখানে 422 ত্রুটি রয়েছে তবে সার্ভারটি পরিষেবা প্রত্যাখ্যান করছে। ভুল ব্যবহারকারীর নাম / পাসওয়ার্ড হ'ল সঠিক বাক্য গঠন (400 ত্রুটি নয়) এবং আমি এমন কোনও পৃষ্ঠাতে অ্যাক্সেস করার চেষ্টা করছি না যার জন্য আমাকে লগ ইন করতে হবে কারণ আমি নিজে লগইন পৃষ্ঠাতে অ্যাক্সেস করছি (401 ত্রুটি নয়)। 401 ত্রুটিটি কোনও সেটিংস পৃষ্ঠার মতো কোনও
কিছুর

98

আরএফসি 4918 থেকে (এবং http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml এও ডকুমেন্টেড ):

422 (অপ্রসারণযোগ্য সত্তা) স্থিতি কোডটির অর্থ সার্ভারটি অনুরোধ সত্তার সামগ্রীর ধরণটি বোঝে (অতএব একটি 415 (অসমর্থিত মিডিয়া প্রকার) স্থিতি কোড অনুপযুক্ত), এবং অনুরোধ সত্তার বাক্য গঠনটি সঠিক (সুতরাং 400) বাজে অনুরোধ ) স্থিতি কোড অনুপযুক্ত) তবে এতে থাকা নির্দেশাবলী প্রক্রিয়া করতে অক্ষম ছিল। উদাহরণস্বরূপ, যদি কোনও এক্সএমএল অনুরোধের শরীরে সু-গঠিত (যেমন সিন্টেক্সটিক্যালি সঠিক) থাকে তবে এই শব্দ ত্রুটিযুক্ত শর্তটি হতে পারে, এক্সএমএল নির্দেশাবলী se


6
আমি 400 এর বেশি বৈধতা ব্যর্থতার জন্য 422
অপ্রসারণযোগ্য সত্তার প্রস্তাব দেব

28

ডাটাবেসে একটি সদৃশ হওয়া উচিত a 409 CONFLICT

আমি 422 UNPROCESSABLE ENTITYবৈধতা ত্রুটি জন্য ব্যবহার করার পরামর্শ দিচ্ছি ।

আমি এখানে 4XX কোডের দীর্ঘতর ব্যাখ্যা দিচ্ছি: http://parker0phil.com/2014/10/16/REST_http_4xx_status_codes_syntax_and_sematics/


19

এটা এখানে:

rfc2616 # বিভাগ -10.4.1 - 400 খারাপ অনুরোধ

অনুরোধটি ত্রুটিযুক্ত সিনট্যাক্সের কারণে সার্ভারের দ্বারা বোঝা গেল না । ক্লায়েন্ট পরিবর্তন ছাড়া অনুরোধ পুনরাবৃত্তি করা উচিত।

rfc7231 # বিভাগ-6.5.1 - 6.5.1। 400 খারাপ অনুরোধ

৪০০ (খারাপ অনুরোধ) স্থিতি কোডটি ইঙ্গিত দেয় যে ক্লায়েন্টের ত্রুটি হিসাবে অনুভূত এমন কোনও কারণে (যেমন, বিকৃত অনুরোধ বাক্য গঠন, অবৈধ অনুরোধ বার্তা ফ্রেমিং, বা প্রতারণামূলক অনুরোধ রাউটিং) সার্ভার অনুরোধটি প্রক্রিয়া করতে পারে না বা করতে পারে না ।

ত্রুটিযুক্ত (সুশৃঙ্খল নয়) ক্ষেত্রে উল্লেখ করে!

rfc4918 - 11.2। 422 অপ্রয়োজনীয় সত্তা

422 (অপ্রসারণযোগ্য সত্তা) স্থিতি কোডটির অর্থ সার্ভারটি
অনুরোধ সত্তার সামগ্রীর ধরণটি বোঝে (অতএব একটি 415 (অসমর্থিত মিডিয়া প্রকার) স্থিতি কোড অনুপযুক্ত), এবং অনুরোধ সত্তার বাক্য গঠনটি সঠিক (সুতরাং 400) বাজে অনুরোধ ) স্থিতি কোড অনুপযুক্ত) তবে এতে থাকা নির্দেশাবলী প্রক্রিয়া করতে অক্ষম ছিল। উদাহরণস্বরূপ, যদি কোনও এক্সএমএল অনুরোধের শরীরে সু-গঠিত (যেমন সিন্টেক্সটিক্যালি সঠিক) থাকে তবে এই শব্দ ত্রুটিযুক্ত শর্তটি হতে পারে , এক্সএমএল নির্দেশাবলী se

উপসংহার

থাম্বের বিধি: [_] 00 সর্বাধিক সাধারণ কেস এবং কেসগুলি মনোনীত কোড দ্বারা আচ্ছাদিত নয় covers

422 সেরা অবজেক্টের বৈধতা ত্রুটি ফিট করে (অবশ্যই আমার প্রস্তাবনা :) শব্দার্থগতভাবে ভ্রান্ত
হিসাবে - "এই ব্যবহারকারীর নামটি ইতিমধ্যে বিদ্যমান" বৈধতার মতো কিছু মনে করুন।

400 টি বস্তুর বৈধতার জন্য ভুলভাবে ব্যবহৃত হয় is


9

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

যদি আসলে এটি হয় তবে আমি অ্যাপ্লিকেশন ত্রুটির সাথে প্রতিক্রিয়াতে একটি স্থিতি ক্ষেত্র যুক্ত করব

<status><code>4</code> <ম্যাসেজ> তারিখের সীমা অবৈধ </ ম্যাসেজ> </status>


1

আরএফসি 2616 - এই ত্রুটিগুলির শব্দার্থকতা সম্পর্কে আরও কিছুটা তথ্য রয়েছে যা HTTP 1.1 নথি করে।

ব্যক্তিগতভাবে, আমি সম্ভবত ব্যবহার করব 400 Bad Request, তবে এটি কোনও বাস্তব সমর্থন ছাড়াই কেবল আমার ব্যক্তিগত মতামত।


0

"বৈধতা ব্যর্থতা" বলতে আপনার অর্থ কী? আপনি কি বৈধতা দিচ্ছেন? আপনি কি সিনট্যাক্স ত্রুটির মতো কিছু উল্লেখ করছেন (উদাহরণস্বরূপ ত্রুটিযুক্ত এক্সএমএল)?

যদি এটি হয় তবে আমি বলতে পারি 400 খারাপ অনুরোধটি সম্ভবত সঠিক জিনিস, তবে এটি কী আপনি "বৈধতা দিচ্ছেন" তা না জেনে এটি বলা অসম্ভব।


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