উত্তর:
স্থিতি 422 সবচেয়ে উপর ভিত্তি করে appropiate বলে মনে হয় বৈশিষ্ট ।
422 (অপ্রসারণযোগ্য সত্তা) স্থিতি কোডটির অর্থ সার্ভারটি অনুরোধ সত্তার সামগ্রীর ধরণটি বোঝে (অতএব একটি 415 (অসমর্থিত মিডিয়া প্রকার) স্থিতি কোড অনুপযুক্ত), এবং অনুরোধ সত্তার বাক্য গঠনটি সঠিক (সুতরাং 400) বাজে অনুরোধ ) স্থিতি কোড অনুপযুক্ত) তবে এতে থাকা নির্দেশাবলী প্রক্রিয়া করতে অক্ষম ছিল। উদাহরণস্বরূপ, যদি কোনও এক্সএমএল অনুরোধের শরীরে সু-গঠিত (যেমন সিন্টেক্সটিক্যালি সঠিক) থাকে তবে এই শব্দ ত্রুটিযুক্ত শর্তটি হতে পারে, এক্সএমএল নির্দেশাবলী se
তারা জানিয়েছে যে ত্রুটিযুক্ত এক্সএমএল খারাপ সিনট্যাক্সের উদাহরণ (400 এর জন্য কল করা)। একটি ত্রুটিযুক্ত ক্যোয়ারী স্ট্রিং এটির সাথে সাদৃশ্যপূর্ণ বলে মনে হয়, তাই 400-টি সুগঠিত ক্যোয়ারী-স্ট্রিংয়ের জন্য উপযুক্ত বলে মনে হচ্ছে না যা প্যারাম অনুপস্থিত।
আপডেট আপডেট @ ডেভিডভি সঠিকভাবে নির্দেশ করে যে এই অনুমানটি মূল HTTP নয়, ওয়েবডিএভি-র জন্য। তবে কিছু জনপ্রিয় অ-ওয়েবডিএভি এপিআই আরও ভাল স্ট্যাটাস কোডের অভাবে (এটি দেখুন ) 422 ব্যবহার করছে ।
400
আরও উপযুক্ত মনে করি ।
আমি নিশ্চিত নই যে একটি নির্ধারিত মান আছে, তবে আমি 400 ব্যাড রিকোয়েস্টটি ব্যবহার করতাম , যা সর্বশেষ এইচটিটিপি স্পেক (2014 থেকে) নথি নিম্নরূপ :
6.5.1। 400 খারাপ অনুরোধ৪০০ (খারাপ অনুরোধ) স্থিতি কোডটি ইঙ্গিত দেয় যে ক্লায়েন্ট ত্রুটি বলে মনে করা এমন কোনও কারণে (যেমন, বিকৃত অনুরোধ বাক্য গঠন, অবৈধ অনুরোধ বার্তা ফ্রেমিং, বা প্রতারণামূলক অনুরোধ রাউটিং) এর কারণে সার্ভার অনুরোধটি প্রক্রিয়া করতে বা করতে পারে না।
400 Bad Request
প্রোটোকল-স্তরের সমস্যাগুলি বোঝাতে বোঝানো হয়েছে, অর্থগত ত্রুটিগুলি নয়। যদি আমরা অ্যাপ্লিকেশন-স্তরের (প্রোটোকল-স্তরের পরিবর্তে) ত্রুটিগুলি চিহ্নিত করতে এইচটিটিপি স্থিতি কোডগুলি হাইজ্যাক করতে চলেছি, তবে কেন আপনি পুরোপুরি যান এবং কেবল ব্যবহার করবেন না 412
?
.NET- এ ডাব্লুসিএফ এপিআইHTTP 404
, ওয়েবএইচটিপিবাইন্ডিং ব্যবহার করার সময়, "এন্ডপয়েন্টটি পাওয়া যায়নি" ত্রুটি ফিরে পেয়ে অনুপস্থিত পরামিতিগুলি পরিচালনা করে ।
404 Not Found
যদি আপনি তার পরামিতি স্বাক্ষর সাথে একত্রে আপনার ওয়েব পরিষেবা পদ্ধতির নাম বিবেচনা ইন্দ্রিয় করতে পারেন। এটি হ'ল যদি আপনি কোনও ওয়েব পরিষেবা পদ্ধতি প্রকাশ করেন LoginUser(string, string)
এবং আপনি অনুরোধ করেন LoginUser(string)
তবে পরবর্তীটি খুঁজে পাওয়া যায় না।
মূলত এর অর্থ হ'ল আপনি যে প্যারামিটার স্বাক্ষর দ্বারা নির্দিষ্ট করেছেন সেগুলি এবং আপনি যে ওয়েব পরিষেবা পদ্ধতিটি কল করছেন সেটি পাওয়া যাবে না।
10.4.5 404 পাওয়া যায় নি
অনুরোধ-ইউআরআইয়ের সাথে মিলে সার্ভারটি কিছু খুঁজে পায়নি। শর্তটি অস্থায়ী বা স্থায়ী কিনা সে সম্পর্কে কোনও ইঙ্গিত দেওয়া হয়নি।
400 Bad Request
, যেমন গার্টি প্রস্তাব , একটি বৈধ প্রতিক্রিয়া কোড থাকে, কিন্তু আমি এটা স্বাভাবিকভাবে নিম্ন স্তরের সমস্যার ইঙ্গিত করতে ব্যবহার করা হয় মনে। এটি সহজেই একটি ত্রুটিযুক্ত HTTP অনুরোধ হিসাবে ব্যাখ্যা করা যেতে পারে, অনুপস্থিত বা অবৈধ HTTP শিরোনাম, বা অনুরূপ similar
10.4.1 400 খারাপ অনুরোধ
অনুরোধটি ত্রুটিযুক্ত সিনট্যাক্সের কারণে সার্ভারের দ্বারা বোঝা গেল না। ক্লায়েন্ট পরিবর্তন ছাড়া অনুরোধ পুনরাবৃত্তি করা উচিত।
আপনি একটি 400 বাজে অনুরোধ কোড প্রেরণ করতে পারেন। এটি একটি সাধারণ-সাধারণ 4XX স্থিতি কোডগুলির মধ্যে একটি, যাতে আপনি কী চান তা বোঝাতে আপনি এটি ব্যবহার করতে পারেন: ক্লায়েন্টটি সঠিকভাবে প্রক্রিয়া করার জন্য আপনার অ্যাপ্লিকেশনটির যে তথ্য / পরামিতিগুলির প্রয়োজন রয়েছে তার অনুরোধ পাঠাচ্ছে।
আমাদের এপিআই প্রকল্পের একটিতে আমরা কিছু অনুরোধের জন্য একটি 409 স্থিতি নির্ধারণ করার সিদ্ধান্ত নিয়েছি, যখন পরামিতি হারিয়ে যাওয়ার কারণে আমরা এটি 100% এ পূরণ করতে পারি না।
এইচটিটিপি স্থিতি কোড "409 সংঘাত" আমাদের জন্য একটি ভাল চেষ্টা ছিল কারণ এর সংজ্ঞাটি সংঘাতের উত্সটি সনাক্ত করতে ব্যবহারকারীর জন্য পর্যাপ্ত তথ্য অন্তর্ভুক্ত করতে হবে।
তথ্যসূত্র: w3.org/ প্রোটোকলস /
সুতরাং 400 বা 404 এর মতো অন্যান্য প্রতিক্রিয়ার মধ্যে আমরা একটি নতুন এবং সঠিক অনুরোধ সেট আপ করতে সহায়ক অনুরোধে কিছু নোট সন্ধানের প্রয়োজনীয়তা প্রয়োগ করার জন্য 409 বেছে নিয়েছি।
আমাদের ক্ষেত্রে এটি যে কোনওভাবেই বিশেষত ছিল কারণ অনুরোধটি পুরোপুরি সঠিক না হলে আমাদের কিছু ডেটা প্রেরণ করা দরকার, এবং আমাদের বার্তাটি দেখার জন্য অনুরোধটিতে কী ভুল ছিল তা বুঝতে ক্লায়েন্টকে প্রয়োগ করতে হবে।
সাধারণভাবে যদি আমাদের কেবলমাত্র কিছু অনুপস্থিত প্যারামিটার থাকে তবে আমরা 400 এবং অনুপস্থিত প্যারামিটারের অ্যারেতে যাই । তবে যখন আমাদের আরও কিছু তথ্য প্রেরণের দরকার হবে যেমন একটি বিশেষ কেস বার্তা এবং আমরা নিশ্চিত হতে চাই যে ক্লায়েন্ট এটির যত্ন নেবে আমরা একটি 409 প্রেরণ করি
আমি সাধারণত ৪২২ (অপ্রসারণযোগ্য সত্তা) এর জন্য যাই যদি প্রয়োজনীয় প্যারামিটারগুলিতে কিছু এপিআই এর শেষ পয়েন্টের সাথে মেলে না (যেমন খুব ছোট পাসওয়ার্ডের মতো) তবে অনুপস্থিত প্যারামিটারের জন্য আমি 406 (অগ্রহণযোগ্য) হয়ে যাব।
Accept-Language: de
, এটি নির্দেশ করে যে এটি কেবল জার্মান ভাষায় প্রতিক্রিয়া গ্রহণ করবে, তবে আপনার সার্ভারটি যে অনুরোধ করা ডকুমেন্টের একমাত্র সংস্করণ রয়েছে তা ইংরেজি বা ফরাসী ভাষায় রয়েছে)) অনুরোধে অনুপস্থিত পরামিতি চিহ্নিত করতে এটি ব্যবহার করা ভুল, অনুমান মধ্যে সংজ্ঞা অনুযায়ী।
আগ্রহীদের জন্য, স্প্রিং এমভিসি (কমপক্ষে 3.x) এই ক্ষেত্রে একটি 400 প্রদান করে, যা আমার কাছে ভুল বলে মনে হয়।
আমি বেশ কয়েকটি গুগল ইউআরএল (অ্যাকাউন্টস.কম.কম) পরীক্ষা করেছি এবং প্রয়োজনীয় প্যারামিটারগুলি সরিয়েছি এবং তারা সাধারণত এই ক্ষেত্রে একটি 404 ফেরত দেয়।
আমি গুগল কপি করব।
এটি যুক্তিযুক্ত হতে পারে যে একটি 404 Not Found
ব্যবহৃত হওয়া উচিত যেহেতু নির্দিষ্ট সংস্থানটি পাওয়া যায় নি।
আমি প্রায়শই একটি 403 নিষিদ্ধ ত্রুটি ব্যবহার করি। যুক্তিটি হ'ল অনুরোধটি বোঝা গিয়েছিল, তবে আমি অনুরোধ অনুযায়ী করব না (কারণ জিনিসগুলি ভুল) because প্রতিক্রিয়া সত্তা ভুলটি কী তা ব্যাখ্যা করে, সুতরাং যদি প্রতিক্রিয়াটি একটি HTML পৃষ্ঠা হয় তবে ত্রুটি বার্তাগুলি পৃষ্ঠাতে রয়েছে। এটি যদি কোনও JSON বা XML প্রতিক্রিয়া হয় তবে ত্রুটির তথ্য সেখানে রয়েছে।
আরএফসি 2616 থেকে :
10.4.4 403 নিষিদ্ধ
সার্ভারটি অনুরোধটি বুঝতে পেরেছিল তবে তা পূরণ করতে অস্বীকার করছে।
অনুমোদন সাহায্য করবে না এবং অনুরোধটির পুনরাবৃত্তি করা উচিত নয়।
যদি অনুরোধের পদ্ধতিটি হেড না হয় এবং সার্ভারটি
কেন অনুরোধটি পূরণ করা হয়নি তা জনসাধারণের কাছে প্রকাশ করতে চায় তবে এটি সত্তায় অস্বীকার করার কারণটি বর্ণনা করতে হবে। সার্ভার যদি ক্লায়েন্টের কাছে এই তথ্যটি সরবরাহ করতে না চায় তবে স্থিতি কোড 404
(পাওয়া যায়নি) পরিবর্তে ব্যবহার করা যেতে পারে।
Authorization will not help
, তাই টুইটারের এটিকে অবৈধ OAuth শংসাপত্রগুলির জন্য প্রেরণ করা উচিত নয়।
401 Unauthorized
পরিবর্তে @torvin টুইটারের একটি পাঠানো উচিত । তবে, আপনি বুঝতে পারবেন কেন তারা এই দুটি কোডের এমডিএন ডক্সের বিবরণটি দেখেন না কেন এটি খুব মিল।
কেবলমাত্র এএসপি.নেট কোরকে একটি রেফারেন্স বা উদাহরণ হিসাবে ব্যবহার করতে, এএসপি.নেট কোর আপনাকে একটি ক্রিয়াকলাপ দিয়ে একটি নিয়ামককে ভাসিয়ে দিতে দেয়, "বিশদ" ক্রিয়াটি এভাবে দেখাবে।
// GET: Cars/Details/5
public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound();
}
var car = await _context.Cars.FirstOrDefaultAsync(m => m.CarId == id);
if (car == null)
{
return NotFound();
}
return View(car);
}
যদি প্যারামিটারটি id
সেট না করা থাকে তবে এটি 404 পাওয়া যায়নি returns
একটি 404 রিটার্ন করুন - যার অর্থ উত্সটি পাওয়া যায়নি।
কোনও আইডি থাকা কোনও সাইটের ইউআরএল সম্পাদনা করার চেষ্টা করুন। আমি কয়েকটি চেষ্টা করেছিলাম:
সমস্ত 404 ফিরে আসে, ইমো কারণ develop বিকাশকারীরা স্ট্যান্ডার্ডটি সঠিকভাবে ব্যাখ্যা করছে, যার উত্তর এখানে এবং আরও অনেকগুলি নয়!
requestBody
।
আমি একটি 403 সঙ্গে যেতে হবে।
আরএফসি 2616 থেকে - হাইপারটেক্সট স্থানান্তর প্রোটোকল - HTTP / 1.1
403 নিষিদ্ধ
সার্ভারটি অনুরোধটি বুঝতে পেরেছিল তবে তা পূরণ করতে অস্বীকার করছে। অনুমোদন সাহায্য করবে না এবং অনুরোধটির পুনরাবৃত্তি করা উচিত নয়। যদি অনুরোধের পদ্ধতিটি হেড না হয় এবং সার্ভারটি কেন অনুরোধটি পূরণ করা হয়নি তা জনসাধারণের কাছে প্রকাশ করতে চায় তবে এটি সত্তায় অস্বীকার করার কারণটি বর্ণনা করতে হবে। সার্ভার যদি ক্লায়েন্টের কাছে এই তথ্যটি সরবরাহ করতে না চায় তবে স্থিতি কোড 404 (পাওয়া যায়নি) পরিবর্তে ব্যবহার করা যেতে পারে।
আপনার প্রতিক্রিয়াতে ব্যর্থতার কারণটি বর্ণনা করা উচিত। আপনি যদি এটি না করতে পছন্দ করেন তবে কেবল 404 ব্যবহার করুন।