ভুল ইনপুট থেকে ডান HTTP স্থিতি কোড


169

200 (সমস্ত ঠিক আছে) প্রতিবেদন না করা তবে ইনপুটটিতে ত্রুটিটি করার সময় অনুকূল HTTP প্রতিক্রিয়া কোড কী?

পছন্দ করুন, আপনি সার্ভারে কিছু ডেটা জমা দিয়েছেন এবং এটি প্রতিক্রিয়া জানাবে যে আপনার ডেটাটি ভুল

ব্যবহার 500সার্ভার ইস্যু মত আরো সৌন্দর্য
ব্যবহার 200সতর্কবার্তা / ত্রুটি প্রতিক্রিয়া পাঠ্য সহ খারাপ (যার ফলে ক্যাশে এবং সবকিছু ঠিক আছে নয়)
ব্যবহার 204এবং কিছুই ফিরে, (কিন্তু ভাল সমর্থিত?) হয়তো ভালো
ব্যবহার 404ভুল যদি অনুরোধ পথ (স্ক্রিপ্ট) পাওয়া যায় এবং যথাযথ জায়গায়


জন্য বিবরণ আমার উত্তর দেখুন stackoverflow.com/a/59527615/4127230
shiva2492

উত্তর:


210

আমাদের এপিআই তৈরি করার সময়ও আমাদের একই সমস্যা ছিল। আমরা একটি এর সমান একটি HTTP স্থিতি কোডটি সন্ধান করছিলাম InvalidArgumentException। নীচের উত্স নিবন্ধটি পড়ার পরে, আমরা 422 Unprocessable Entityযা ব্যবহার করে শেষ করেছি :

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

উত্স: https://www.bennadel.com/blog/2434-http-status-codes-for-inuthor-data-400-vs-422.htm


138

4 (4XX) দিয়ে শুরু কোডগুলি ক্লায়েন্ট ত্রুটির জন্য বোঝানো হয়। সম্ভবত 400 (খারাপ অনুরোধ) এই ক্ষেত্রে উপযুক্ত হতে পারে? Http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html এ সংজ্ঞা :

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


13
400 Bad Requestখারাপ না তবে সাধারণত ত্রুটিযুক্ত সিনট্যাক্সের জন্য সংরক্ষণ করা উচিত। ওপিকে সুসংগঠিত বাক্য গঠন তবে অবৈধ মানগুলির ক্ষেত্রে বেশি উদ্বিগ্ন বলে মনে হচ্ছে। প্লাস 400 মোটামুটি সাধারণ "ওহ শিট কিছু ঠিক ছিল না" রেসপন্স কোড যা আপনি ভুল ইনপুটটির একটি বিশেষ কেস থেকে আলাদা করতে চাইতে পারেন।
Keego

4
নোট করুন যে শব্দটি আরএফসি 7231 এ আপডেট হয়েছিল এবং "ত্রুটিযুক্ত সিনট্যাক্সের কারণে সার্ভারের দ্বারা অনুরোধটি বোঝা যায়নি" আপডেট করা হয়েছিল "ক্লায়েন্ট বলে মনে করা এমন কোনও কারণে সার্ভার অনুরোধটি প্রক্রিয়া করতে পারে না বা করবে না" ত্রুটি (যেমন, ত্রুটিযুক্ত অনুরোধ বাক্য গঠন, অবৈধ অনুরোধ বার্তা ফ্রেমিং, বা প্রতারণামূলক অনুরোধ রাউটিং) "।
Calimo

14

আরএফসি স্পেক ছাড়াও আপনি এটি কার্যক্রমে দেখতেও পারেন। টুইটারের প্রতিক্রিয়াগুলি দেখুন।

https://developer.twitter.com/en/docs/ads/general/guides/response-codes


19
আপনি যদি আপনার লিঙ্কগুলি থেকে উদাহরণগুলি বের করেন তবে আপনি আরও উচ্চতর সুযোগ পেতে পারেন।
জ্যারেড থারস্ক

আমি আমার পোস্টে দৃষ্টান্ত স্থাপন করলাম stackoverflow.com/a/59527615/4127230
shiva2492

1
আমার জন্য লিঙ্ক ( fb-developers.info/tech/fb_dev/faq/general/gen_10.html ) একটি এলোমেলো বিজ্ঞাপনের দিকে নিয়ে যায়। আমার মনে হয় ডোমেনটি
স্পোফ করা

@ dmitry502 জালিয়াতিযুক্ত লিঙ্কটি সরাতে উত্তরের উত্তর দেওয়া হয়েছে। আপনার মন্তব্যের জন্য ধন্যবাদ
ফ্রান্সিস

9

409 Conflict একটি গ্রহণযোগ্য সমাধান হতে পারে।

অনুসারে: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

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

দস্তাবেজ একটি উদাহরণ দিয়ে অবিরত:

PUT অনুরোধের প্রতিক্রিয়া হিসাবে সংঘাতগুলি সম্ভবত সবচেয়ে বেশি ঘটে। উদাহরণস্বরূপ, যদি সংস্করণটি ব্যবহার করা হয়ে থাকে এবং সত্তাটি PUT হ'ল এমন কোনও সংস্থার পরিবর্তনগুলি অন্তর্ভুক্ত করে যা পূর্বের (তৃতীয় পক্ষের) অনুরোধের সাথে বিরোধী হয় তবে সার্ভারটি 409 প্রতিক্রিয়াটি ব্যবহার করে এটি অনুরোধটি সম্পূর্ণ করতে পারে না তা বোঝাতে পারে । এই ক্ষেত্রে, প্রতিক্রিয়া সত্তায় প্রতিক্রিয়া সামগ্রী-প্রকার দ্বারা সংজ্ঞায়িত করা ফর্ম্যাটে দুটি সংস্করণের মধ্যে পার্থক্যের একটি তালিকা থাকতে পারে।


আমার ক্ষেত্রে, আমি একটি এপিআইয়ের মাধ্যমে একটি ডাটাবেসের কাছে স্ট্রিংটি অনন্য রাখতে চাই। এটি ডাটাবেসে যুক্ত করার আগে, আমি পরীক্ষা করে যাচ্ছি যে এটি ইতিমধ্যে ডাটাবেজে নেই।

যদি তা হয়, আমি ফিরে আসব "Error: The string is already in the database", 409

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


2

নীচের পরিস্থিতি অনুযায়ী,

ধরা যাক যে কেউ আপনার সার্ভারে এমন ডেটা সহ অনুরোধ করে যা সঠিক ফর্ম্যাটে থাকে তবে কেবল "ভাল" ডেটা হয় না। সুতরাং উদাহরণস্বরূপ, কল্পনা করুন যে কেউ একটি এপিআই এন্ডপয়েন্টে একটি স্ট্রিং মান পোস্ট করেছে যা একটি স্ট্রিংয়ের মান আশা করেছিল; তবে, স্ট্রিংয়ের মানটিতে এমন ডেটা রয়েছে যা কালো তালিকাভুক্ত ছিল (উদাহরণস্বরূপ "লোকেরা তাদের পাসওয়ার্ড হিসাবে" পাসওয়ার্ড "ব্যবহার করতে বাধা দিচ্ছে)। তাহলে স্ট্যাটাস কোড 400 বা 422 হয়?

এখন অবধি, আমি একটি "400 খারাপ অনুরোধ" ফিরিয়ে দিয়েছি, ডাব্লু 3.org অনুযায়ী, এর অর্থ:

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

এই বিবরণটি পুরোপুরি ফিট করে না; তবে, আপনি যদি HTTP / 1.1 প্রোটোকলে সংজ্ঞায়িত মূল HTTP স্থিতি কোডগুলির তালিকা অনুসরণ করেন তবে এটি সম্ভবত আপনার সেরা বাজি।

তবে সম্প্রতি, আমার দেব দলের একজন [আমার দিকে] উল্লেখ করেছেন যে জনপ্রিয় এপিআইগুলি ত্রুটি প্রতিবেদন করার সাথে আরও দানাদার হওয়ার জন্য এইচটিটিপি এক্সটেনশনগুলি ব্যবহার শুরু করছে। বিশেষত, টুইটার এবং পুনরাবৃত্তির মতো অনেকগুলি এপিআই ওয়েবডিএভি-র জন্য এইচটিটিপি এক্সটেনশনে সংজ্ঞায়িত স্থিতি কোড "422 অপ্রসারণযোগ্য সত্তা" ব্যবহার করছে। HTTP স্থিতি কোড 422 বলে:

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

উপরে থেকে আমাদের পাসওয়ার্ডের উদাহরণটিতে ফিরে যেতে, এই 422 টি স্ট্যাটাস কোডটি আরও বেশি উপযুক্ত মনে করে। সার্ভার বুঝতে পারে আপনি কী করার চেষ্টা করছেন; এবং এটি আপনি যে ডেটা জমা করছেন তা বোঝে; এটি কেবল সেই ডেটা প্রক্রিয়া করতে দেয় না।


-7

404 - পাওয়া যায় নি - অনুরোধ করা ইউআরআই অবৈধ বা ব্যবহারকারীর মতো অনুরোধ করা সংস্থার উপস্থিতি নেই।


2
ওপি ইতিমধ্যে রায় দিয়েছে যে: " যদি অনুরোধ করা পথ (স্ক্রিপ্ট) পাওয়া যায় এবং যথাযথ জায়গায় 404 ব্যবহার করা ভুল হয় "
রেমি লেবেউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.