উদাহরণস্বরূপ, আপনি একটি জিইটি অনুরোধ চালান users/9
তবে # 9 আইডি সহ কোনও ব্যবহারকারী নেই। সেরা প্রতিক্রিয়া কোড কোনটি?
- 200 ঠিক আছে
- 202 স্বীকৃত
- 204 কোনও সামগ্রী নেই
- 400 খারাপ অনুরোধ
- 404 পাওয়া যায়নি
উদাহরণস্বরূপ, আপনি একটি জিইটি অনুরোধ চালান users/9
তবে # 9 আইডি সহ কোনও ব্যবহারকারী নেই। সেরা প্রতিক্রিয়া কোড কোনটি?
উত্তর:
টিএল; ডিআর: ব্যবহার করুন 404
দেখা এই ব্লগ । এটি খুব ভালভাবে ব্যাখ্যা করে।
ব্লগের মন্তব্যগুলির সংক্ষিপ্তসার 204
:
204 No Content
কোনও ব্রাউজারের প্রতিক্রিয়া কোড হিসাবে মারাত্মকভাবে কার্যকর নয় (যদিও এইচটিটিপি অনুসারে ব্রাউজারগুলির এটি 'ভিউ পরিবর্তন করবেন না' প্রতিক্রিয়া কোড হিসাবে বুঝতে হবে)।204 No Content
হয় তবে Ajax ওয়েব পরিষেবাগুলি যা কিছু আসতে না করেও সাফল্য ইঙ্গিত করতে পারেন জন্য খুবই উপযোগী। (বিশেষত ক্ষেত্রে ক্ষেত্রেDELETE
বা POST
এর মতামতের প্রয়োজন হয় না)।সুতরাং, আপনার প্রশ্নের উত্তরটি 404
আপনার ক্ষেত্রে ব্যবহার ।204
একটি বিশেষায়িত রেপোনাস কোড যা আপনার প্রায়শই একটি এর প্রতিক্রিয়া হিসাবে কোনও ব্রাউজারে ফিরে আসবে না GET
।
অন্যান্য রিস্পন্স কোডগুলো যে এর চেয়ে আরও কম উপযুক্ত 204
এবং404
:
200
আপনি যা সাফল্যের সাথে নিয়ে এসেছেন তার দেহের সাথে ফিরে আসা উচিত। আপনি যে সত্তাটি আনছেন সেটির অস্তিত্ব নেই যখন উপযুক্ত নয়।202
সার্ভার যখন কোনও বস্তুর উপর কাজ শুরু করে তবে অবজেক্টটি এখনও সম্পূর্ণ প্রস্তুত নয় isn't অবশ্যই এখানে মামলা হয় না। একটি GET
অনুরোধের প্রতিক্রিয়া হিসাবে আপনি 9 ব্যবহারকারী তৈরি করা শুরু করেননি বা শুরু করবেন না । যা সকল ধরণের নিয়ম ভঙ্গ করে।400
দুর্বল ফর্ম্যাট করা HTTP অনুরোধের প্রতিক্রিয়াতে ব্যবহৃত হয় (উদাহরণস্বরূপ, বিকৃত HTTP শিরোনাম, ভুলভাবে অর্ডার করা বিভাগগুলি ইত্যাদি)। এটি প্রায় অবশ্যই আপনি যে কোনও ফ্রেমওয়ার্ক ব্যবহার করছেন তা দ্বারা পরিচালিত হবে। আপনি স্ক্র্যাচ থেকে নিজের সার্ভারটি না লিখে আপনার এটিকে মোকাবেলা করার দরকার নেই। সম্পাদনা করুন : নতুন আরএফসিগুলি এখন শব্দার্থকভাবে অবৈধ অনুরোধগুলির জন্য 400 ব্যবহারের অনুমতি দেয়।এইচটিটিপি স্থিতি কোডগুলির উইকিপিডিয়া বর্ণনা বিশেষত সহায়ক। আপনি HTTP / 1.1 আরএফসি 2616 নথিতে www.w3.org এ সংজ্ঞাটি দেখতেও পারেন
204
প্রতিক্রিয়া কোড সম্পর্কিত (কোনও সামগ্রী নেই)।
/badurl
বা /user/9
যখন এই জাতীয় ব্যবহারকারীর অস্তিত্ব না থাকে তবে এটি সত্য । একজন বিকাশকারী 'খুঁজে পাওয়া যায় না' এর চেয়ে আরও ভাল কারণের বাক্যাংশ যোগ করে সহায়তা করতে পারে তবে এটি প্রয়োজন হয় না।
The server has not found anything matching the Request-URI
। ওয়েব / অ্যাপ্লিকেশন সার্ভারটি আসলে একটি অনুরোধ-ইউআরআইয়ের সাথে মিলিত একটি অ্যাকশন পেয়েছে, যদিও ডিবি সার্ভারটি নেই। তবে এটি আরও বলেছে This status code is commonly used when [...] no other response is applicable
, সুতরাং আমি মনে করি যে এটির ব্যবহারটিকে কিছুটা বৈধতা দেয় (যদিও আমি এটির সাথে / তার সাথে একমত নাও)।
আমি খালি ডেটা সহ 204 বা 200 এর পক্ষে 404 এর তীব্র বিরোধিতা করছি। অথবা কমপক্ষে 404 সহ একটির প্রতিক্রিয়া সত্তা ব্যবহার করা উচিত।
অনুরোধটি গ্রহণ করা হয়েছিল এবং সঠিকভাবে প্রক্রিয়া করা হয়েছে - এটি সার্ভারে অ্যাপ্লিকেশন কোডটি ট্রিগার করেছিল, সুতরাং কেউ সত্যই বলতে পারে না যে এটি ক্লায়েন্ট ত্রুটি ছিল এবং এইভাবে ক্লায়েন্ট ত্রুটি কোডের পুরো ক্লাসটি (4XX) উপযুক্ত নয়।
আরও গুরুত্বপূর্ণ, 404 বিভিন্ন প্রযুক্তিগত কারণে ঘটতে পারে। উদাহরণস্বরূপ, অ্যাপ্লিকেশনটি অস্থায়ীভাবে সার্ভারে অ্যাক্টিভেটেড বা আনইনস্টল করা হচ্ছে, প্রক্সি সংযোগের সমস্যাগুলি এবং কী নয়। সুতরাং ক্লায়েন্ট একটি 404 এর অর্থ "খালি ফলাফল সেট" এবং 404 এর মধ্যে পার্থক্য করতে পারে না যার অর্থ "পরিষেবাটি পাওয়া যাবে না, পরে আবার চেষ্টা করুন"।
এটি মারাত্মক হতে পারে: আপনার কোম্পানির একটি অ্যাকাউন্টিং পরিষেবা কল্পনা করুন যা বার্ষিক বোনাসের কারণে সমস্ত কর্মচারীদের তালিকা করে। দুর্ভাগ্যক্রমে, একসময় যখন এটি বলা হয় তখন এটি 404 ফেরত দেয় that এর অর্থ কি এই নয় যে বোনাসের জন্য কারও কারও দায় নেই, বা অ্যাপ্লিকেশনটি এখন নতুন স্থাপনার জন্য বন্ধ রয়েছে?
-> অ্যাপ্লিকেশনগুলির জন্য যা তাদের তথ্যের মান সম্পর্কে যত্নশীল, 404 প্রতিক্রিয়া সত্তা ছাড়াই অতএব অচল।
এছাড়াও, অনেক ক্লায়েন্ট ফ্রেমওয়ার্ক 404-এ সাড়া দেয় যাতে কোনও প্রশ্ন জিজ্ঞাসা না করে একটি ব্যতিক্রম ছুঁড়ে ফেলে। এটি ক্লায়েন্ট বিকাশকারীকে এই ব্যতিক্রমটি ধরতে, এটিকে মূল্যায়ন করতে এবং তারপরে সিদ্ধান্ত নিতে বাধ্য করে যে এটি কোনও ত্রুটি হিসাবে লগ করতে হবে যা উদাহরণস্বরূপ একটি মনিটরিং উপাদান বা এটি উপেক্ষা করবেন কিনা ignore সেটা আমার কাছেও সুন্দর লাগছে না।
204 এর বেশি 404 এর সুবিধা হ'ল এটি একটি প্রতিক্রিয়া সত্তাকে ফিরিয়ে দিতে পারে যাতে অনুরোধ করা সংস্থানটি কেন পাওয়া যায় নি সে সম্পর্কে কিছু তথ্য থাকতে পারে। তবে যদি তা সত্যিই প্রাসঙ্গিক হয়, তবে কেউ 200 ওকে প্রতিক্রিয়া ব্যবহার করার বিষয়টিও বিবেচনা করতে পারে এবং সিস্টেমটিকে এমনভাবে ডিজাইন করতে পারে যা পেডলোড ডেটার ত্রুটি প্রতিক্রিয়াগুলির জন্য অনুমতি দেয়। বিকল্পভাবে, একজন কলারকে কাঠামোগত তথ্য ফেরত দিতে 404 জবাবের পেডলোড ব্যবহার করতে পারেন। যদি তিনি উদাহরণস্বরূপ XML বা JSON এর পরিবর্তে এইচটিএমএল পৃষ্ঠা পেয়ে থাকেন যা তিনি পার্স করতে পারেন, তবে এটি একটি ভাল সূচক যে কলকারীর দৃষ্টিকোণ থেকে বৈধ হতে পারে "কোনও ফলাফল নয়" জবাবের পরিবর্তে প্রযুক্তিগত কিছু ভুল হয়েছে। বা কেউ তার জন্য এইচটিটিপি রেসপন্স শিরোনাম ব্যবহার করতে পারে।
তবুও আমি খালি সাড়া দিয়ে একটি 204 বা 200 পছন্দ করব। এইভাবে অনুরোধটির প্রযুক্তিগত সম্পাদনের স্থিতি অনুরোধের যৌক্তিক ফলাফল থেকে পৃথক করা হয়। 2XX এর অর্থ "প্রযুক্তিগত সম্পাদন ঠিক আছে, এটি ফলাফল, এটির সাথে ডিল করুন"।
আমি মনে করি বেশিরভাগ ক্ষেত্রে খালি ফলাফল গ্রহণযোগ্য কিনা তা সিদ্ধান্ত নেওয়ার জন্য এটি ক্লায়েন্টের হাতে ছেড়ে দেওয়া উচিত। সঠিক প্রযুক্তিগত প্রয়োগের পরেও 404 জবাব না দিয়ে ক্লায়েন্ট কেসকে ত্রুটি হিসাবে বিবেচনা করার সিদ্ধান্ত নিতে পারে যা কেবল কোনও ত্রুটি নয়।
আরেকটি দ্রুত উপমা: "কোনও ফলাফল পাওয়া যায়নি" এর জন্য ৪০৪ ফিরিয়ে নেওয়া যদি কোনও এসকিউএল কোয়েরি কোনও ফল না দেয় তবে ডেটাবেস সংযোগপ্রকাশ ছোঁড়ার মতো। এটি কাজটি সম্পন্ন করতে পারে, তবে প্রচুর সম্ভাব্য প্রযুক্তিগত কারণ রয়েছে যা একই ব্যতিক্রমকে ফেলে দেয় যা পরে বৈধ ফলাফলের জন্য ভুল হবে।
503 Service Unavailable
।
/users
রুট নয়, তবে /users/9
, "# 9" হিসাবে পরিচিত ব্যবহারকারী), সুতরাং আপনার 'খালি ফলাফল সেট' তুলনাটি অর্থবোধ করে না। 404 এর অর্থ হ'ল বস্তুর অস্তিত্ব নেই।
প্রথমদিকে, আমি ভেবেছিলাম একটি 204 অর্থবোধ করবে, তবে আলোচনার পরে আমি বিশ্বাস করি 404 একমাত্র সত্যিকারের সঠিক প্রতিক্রিয়া। নিম্নলিখিত তথ্য বিবেচনা করুন:
ব্যবহারকারী: জন, পিটার
METHOD URL STATUS RESPONSE
GET /users 200 [John, Peter]
GET /users/john 200 John
GET /users/kyle 404 Not found
GET /users?name=kyle` 200 []
DELETE /users/john 204 No Content
কিছু পটভূমি:
অনুসন্ধানটি একটি অ্যারে দেয়, এটির কোনও মিল নেই তবে এটিতে সামগ্রী রয়েছে: খালি অ্যারে ।
404 অবশ্যই ইউআরএলগুলির জন্য সবচেয়ে বেশি পরিচিত যা অনুরোধকৃত সার্ভার দ্বারা সমর্থিত নয়, তবে অনুপস্থিত সংস্থান আসলে একই রকম same
যদিও /users/:name
এর সাথে মিল রয়েছে users/kyle
, ব্যবহারকারী কাইল রিসোর্স উপলভ্য নয় তাই 404 এখনও প্রয়োগ হয়। এটি কোনও অনুসন্ধানের অনুসন্ধান নয়, এটি ডায়নামিক ইউআরএল দ্বারা প্রত্যক্ষ রেফারেন্স , সুতরাং এটি 404।
যাইহোক, আমার দুটি সেন্ট :)
যদি এটি প্রত্যাশিত হয় যে উত্সটি বিদ্যমান, তবে এটি খালি হতে পারে তবে আমি যুক্তি দিয়ে বলব যে উপস্থাপনের সাথে 200 ওকে পাওয়া সহজ হবে যা নির্দেশ করে যে বিষয়টি খালি রয়েছে।
সুতরাং আমি বরং / জিনিসগুলিকে OK "আইটেমগুলি" দিয়ে 200 ওকে ফিরিয়ে আনতে চাইছি: []} 204 এর তুলনায় কিছুই নেই, কারণ এইভাবে 0 টি আইটেম সহ একটি সংগ্রহের সাথে কেবল সংগ্রহের মতোই বিবেচনা করা যেতে পারে এটিতে আরও আইটেম।
আমি কেবল পুটস এবং মুছে ফেলার জন্য 204 কোনও সামগ্রী রেখে যাব না, যেখানে এমন ঘটনা হতে পারে যে সত্যিকারের কোনও উপস্থাপনা নেই is
যে ক্ষেত্রে / জিনিস / 9 সত্যিই বিদ্যমান নেই, একটি 404 উপযুক্ত।
customers/1/addressbook
, আরপিসির উপায়টি হ'ল একটি এন্ডপয়েন্টটি কল করা GetCustomerAddressBook
এবং হয় ডেটা গ্রহণ করা বা মূলত নালাগুলি এবং এইচটিটিপি এর জটিলতাগুলি নিয়ে এত চিন্তা করার দরকার নেই। উভয়েরই পক্ষে মতামত রয়েছে।
ডাব্লু 3 পোস্ট অনুসারে ,
200 ঠিক আছে
অনুরোধটি সফল হয়েছে। প্রতিক্রিয়া সহ ফিরিয়ে দেওয়া তথ্যটি অনুরোধে ব্যবহৃত পদ্ধতির উপর নির্ভরশীল
202 স্বীকৃত
প্রক্রিয়াজাতকরণের জন্য অনুরোধটি গ্রহণ করা হয়েছে, তবে প্রক্রিয়াজাতকরণ শেষ হয়নি।
204 কোনও সামগ্রী নেই
সার্ভারটি অনুরোধটি পূরণ করেছে তবে কোনও সত্তা-দেহ ফেরত দেওয়ার দরকার নেই এবং সম্ভবত আপডেট মেন্টেরফর্মেশনটি ফিরে আসতে চাইবে।
400 খারাপ অনুরোধ
অনুরোধটি ত্রুটিযুক্ত সিনট্যাক্সের কারণে সার্ভারের দ্বারা বোঝা গেল না। ক্লায়েন্ট পরিবর্তন ছাড়া অনুরোধ পুনরাবৃত্তি করা উচিত
401 অননুমোদিত
অনুরোধটির ব্যবহারকারীর প্রমাণীকরণ প্রয়োজন। প্রতিক্রিয়াটির মধ্যে একটি WWW- প্রমাণীকরণের শিরোনাম ক্ষেত্র অন্তর্ভুক্ত থাকতে হবে
404 পাওয়া যায়নি
অনুরোধ-ইউআরআইয়ের সাথে মিলে সার্ভারটি কিছু খুঁজে পায়নি। শর্তটি অস্থায়ী বা স্থায়ী কিনা সে সম্পর্কে কোনও ইঙ্গিত দেওয়া হয়নি
204 No Content
কোনও ফলাফল না পেলে ফিরে আসতে পারে । না 404
, এটির ফলস্বরূপ আপনার ফলাফল রয়েছে তবে এতে কোনও সামগ্রী নেই ..
সংক্ষিপ্তকরণ বা সরলীকরণ করতে,
2 এক্সএক্স: alচ্ছিক ডেটা: সুগঠিত ইউআরআই: মানদণ্ড ইউআরআইয়ের অংশ নয়: মানদণ্ডটি যদি Rচ্ছিক হয় তবে @RequestBody এবং @RequestParam 2XX এ যেতে হবে should উদাহরণ: নাম / স্থিতি অনুসারে ফিল্টার করুন
4xx: প্রত্যাশিত ডেটা: সুগঠিত ইউআরআই নয়: মানদণ্ডটি ইউআরআইয়ের অংশ: যদি মানদণ্ড বাধ্যতামূলক হয় যা কেবলমাত্র @PathVariable এ সুনির্দিষ্ট করা যেতে পারে তবে এটি 4 xxx হতে পারে। উদাহরণ: অনন্য আইডি দ্বারা অনুসন্ধান।
এইভাবে জিজ্ঞাসিত পরিস্থিতির জন্য: "ব্যবহারকারী / 9" 4XX (সম্ভবত 404) হবে তবে "ব্যবহারকারী? নাম = সুপারম্যান" এর জন্য 2XX হওয়া উচিত (সম্ভবত 204)
দুটি প্রশ্ন জিজ্ঞাসা করা হয়। শিরোনামে একটি এবং উদাহরণে একটি। আমি মনে করি এটি আংশিকভাবে যে পরিমাণ প্রতিক্রিয়া উপযুক্ত তা নিয়ে বিতর্ক সৃষ্টি করেছে।
প্রশ্নের শিরোনাম খালি ডেটা সম্পর্কে জিজ্ঞাসা করে। খালি ডেটা এখনও ডেটা তবে কোনও ডেটা হিসাবে একই নয়। সুতরাং এটি সম্ভবত কোনও ফলাফলের জন্য একটি সেট, অর্থাৎ একটি তালিকার অনুরোধ করবে/users
। যদি একটি তালিকা খালি থাকে তবে এটি এখনও একটি তালিকা তাই 204 (কোনও সামগ্রী নেই) সবচেয়ে উপযুক্ত। আপনি সবেমাত্র ব্যবহারকারীর একটি তালিকা চেয়েছিলেন এবং একটি সরবরাহ করা হয়েছে, এটিতে কোনও বিষয়বস্তু না থাকার ঘটনা ঘটে।
পরিবর্তে প্রদত্ত উদাহরণটি কোনও নির্দিষ্ট অবজেক্ট, একজন ব্যবহারকারী, সম্পর্কে জিজ্ঞাসা করে /users/9
। যদি ব্যবহারকারী # 9 পাওয়া না যায় তবে কোনও ব্যবহারকারীর অবজেক্ট ফেরত দেওয়া হবে না। আপনি একটি নির্দিষ্ট সংস্থান (একটি ব্যবহারকারী অবজেক্ট) চেয়েছিলেন এবং এটি দেওয়া হয়নি কারণ এটি পাওয়া যায় নি, সুতরাং একটি 404 উপযুক্ত is
আমি মনে করি এটি কার্যকর করার উপায়টি হ'ল যদি আপনি কোনও শর্তাধীন বিবৃতি না যোগ করে আপনি যেভাবে প্রতিক্রিয়াটি আশা করেন সেভাবে ব্যবহার করতে পারেন, তবে একটি 204 ব্যবহার করুন অন্যথায় 404 ব্যবহার করুন use
আমার উদাহরণগুলিতে আমি খালি তালিকার সাথে এটির বিষয়বস্তু আছে কিনা তা পরীক্ষা করেই পুনরুক্তি করতে পারি, তবে আমি কিছু নষ্ট না করে বা চেক যোগ না করে কোনও নাল বস্তুতে ব্যবহারকারীর অবজেক্ট ডেটা প্রদর্শন করতে পারি না see
আপনি অবশ্যই নাল অবজেক্ট প্যাটার্ন ব্যবহার করে কোনও বস্তুটি ফেরত দিতে পারেন যদি এটি আপনার প্রয়োজন অনুসারে হয় তবে এটি অন্য থ্রেডের জন্য আলোচনা।
প্রশ্ন দেখার পরে, আপনি 404
কেন ব্যবহার করবেন না?
আরএফসি 7231 এর ভিত্তিতে সঠিক স্থিতি কোডটি is204
উপরের এনওজারগুলিতে আমি 1 টি ছোট ভুল বোঝাবুঝি লক্ষ্য করেছি:
1.- সংস্থানটি হ'ল: /users
২-- /users/8
সংস্থান নয়, এটি হ'ল /users
রুট প্যারামিটার সহ সংস্থান8
, গ্রাহক সম্ভবত এটি লক্ষ্য করতে পারে না এবং পার্থক্যটিও জানে না, তবে প্রকাশক এটি জানেন এবং এটি অবশ্যই জানেন! ... সুতরাং তাকে অবশ্যই গ্রাহকদের জন্য একটি সঠিক প্রতিক্রিয়া ফিরিয়ে দিতে হবে। সময়কাল।
তাই:
আরএফসির উপর ভিত্তি করে: 404 টি ভুল কারণ সংস্থানগুলি /users
পাওয়া গেছে, তবে প্যারামিটারটি ব্যবহার করে চালিত যুক্তিটি 8
কোনও content
প্রতিক্রিয়া হিসাবে ফিরে আসেনি , সুতরাং সঠিক উত্তরটি হ'ল:204
এখানে মূল বক্তব্যটি: 404
অভ্যন্তরীণ যুক্তি প্রক্রিয়া করার জন্যও সংস্থানটি পাওয়া যায় নি
204
এটি একটি: আমি সংস্থানটি পেয়েছি, যুক্তিটি কার্যকর করা হয়েছিল তবে আমি রুট প্যারামিটারে দেওয়া আপনার মানদণ্ড ব্যবহার করে কোনও ডেটা খুঁজে পাইনি যাতে আমি আপনাকে কিছু ফিরিয়ে দিতে পারি না। দুঃখিত, আপনার মানদণ্ড যাচাই করুন এবং আমাকে আবার কল করুন।
200
: ঠিক আছে, আমি রিসোর্সটি পেয়েছি, যুক্তিটি কার্যকর করা হয়েছিল (এমনকি যখন আমি কোনও কিছু ফেরত দিতে বাধ্য হয় না) এটি গ্রহণ করুন এবং আপনার ইচ্ছায় এটি ব্যবহার করুন।
205
: (জিইটির প্রতিক্রিয়াটির সর্বোত্তম বিকল্প) আমি সংস্থানটি পেয়েছি, যুক্তিটি কার্যকর করা হয়েছিল, আপনার জন্য আমার কাছে কিছু সামগ্রী রয়েছে, এটি ভালভাবে ব্যবহার করুন, ওহ, আপনি যদি কোনও দৃশ্যে এটি ভাগ করেই চলেছেন তবে দয়া করে ভিউটি রিফ্রেশ করুন এটি প্রদর্শন করুন।
আশা করি এটা সাহায্য করবে.
বিদ্যমান উত্তরগুলি কী ব্যাখ্যা করে না তা হ'ল আপনি পথের পরামিতি ব্যবহার করেন বা ক্যোয়ারী প্যারামিটারগুলি ব্যবহার করে তা একটি পার্থক্য করে।
/users/9
, প্রতিক্রিয়া হওয়া উচিত 404
কারণ যে সংস্থানটি পাওয়া যায় নি। /users/9
এটি হ'ল সংস্থান, এবং ফলাফলটি অকেজো, বা একটি ত্রুটি, এটি বিদ্যমান নেই। এই না একটি একসংখ্যা।/users?id=9
, প্রতিক্রিয়া হওয়া উচিত 204
কারণ সংস্থানটি /users
পাওয়া গেছে তবে এটি কোনও ডেটা ফেরত দিতে পারেনি। সম্পদ /users
বিদ্যমান এবং ফলাফলের এন-এআরওয়াই হয়, এটি বিদ্যমান যদিও তা খালি। তাহলে id
অনন্য, এই হল একটি একসংখ্যা।পাথ প্যারামিটার ব্যবহার করা হবে বা ক্যোয়ারী প্যারামিটারগুলি ব্যবহারের ক্ষেত্রে নির্ভর করে। আমি বাধ্যতামূলক, আদর্শিক, বা যুক্তি সনাক্তকরণের জন্য পথের পরামিতিগুলি পছন্দ করি চ্ছিক, নন-আদর্শিক বা বিশিষ্ট যুক্তিগুলির জন্য (যেমন পেজিং, কোলেশন লোকেল এবং স্টাফ) query একটি REST এপিআইতে, আমি বিশেষত "চাইল্ড রেকর্ডস" পেতে প্রথম পাবলিক ssh কী পেতে বা তৃতীয় ডাক ঠিকানা পেতে পছন্দ করার সম্ভাব্য নীড়ের কারণে ব্যবহার করব /users/9
না ।/users?id=9
/users/9/ssh-keys/0
/users/9/address/2
আমি 404 ব্যবহার পছন্দ করি। এখানে কেন:
204
একটি void
পদ্ধতির মত । আমি এটা ব্যবহার করেন না GET
, শুধুমাত্র POST
, PUT
এবং DELETE
। GET
শনাক্তকারীরা কোথার পরামিতি নয় , যেখানে পরামিতি রয়েছে সে ক্ষেত্রে আমি ব্যতিক্রম করি ।NoSuchElementException
, ArrayIndexOutOfBoundsException
যে ভালো কিছু, একটি আইডি বিদ্যমান নয়, তাই হয়, এটা একটি ক্লায়েন্ট ত্রুটি ব্যবহার ক্লায়েন্ট দ্বারা সৃষ্ট বা।204
মানে কোডের একটি অতিরিক্ত শাখা যা এড়ানো যায়। এটি ক্লায়েন্ট কোডটিকে জটিল করে তোলে এবং কিছু ক্ষেত্রে এটি সার্ভার কোডকেও জটিল করে তোলে (আপনি সত্তা / মডেল ম্যানড বা সরল সত্তা / মডেলগুলি ব্যবহার করেন কিনা তার উপর নির্ভর করে; এবং আমি দৃ I ়ভাবে সত্তা / মডেল মনড থেকে দূরে থাকার জন্য ়ভাবে প্রস্তাব , এটি বাজে বাগগুলিতে নিয়ে যেতে পারে যেখানে কারণ আপনি যে মোনাডকে ভাবেন যে কোনও অপারেশন সফল হয়েছে এবং 200 বা 204 ফিরিয়ে দিন যখন আপনার আসলে অন্য কিছু পাওয়া উচিত ছিল)।সর্বশেষ তবে সর্বনিম্ন নয়: ধারাবাহিকতা
GET /users/9
PUT /users/9
এবং DELETE /users/9
PUT /users/9
এবং DELETE /users/9
ইতিমধ্যে 204
সফল আপডেট বা মুছে ফেলার ক্ষেত্রে ফিরে আসতে হবে। সুতরাং ব্যবহারকারী 9 উপস্থিত না থাকলে তাদের কী ফিরিয়ে দেওয়া উচিত? ব্যবহৃত এইচটিটিপি পদ্ধতির উপর নির্ভর করে বিভিন্ন স্ট্যাটাস কোড হিসাবে একই পরিস্থিতি উপস্থাপিত হওয়ার কোনও মানে নেই।
তদুপরি, কোনও আদর্শিক নয়, একটি সাংস্কৃতিক কারণ: যদি প্রকল্পে ঘটে যাওয়া পরবর্তী জিনিসগুলির 204
জন্য ব্যবহার করা GET /users/9
হয় তবে কারও মনে 204
হয় এন-অ্যারি পদ্ধতির জন্য ফিরে আসা ভাল good এবং এটি ক্লায়েন্ট কোডকে জটিল করে তোলে কারণ কেবল 2xx
শরীরের জন্য অনুসন্ধান এবং তারপরে ডিকোডিংয়ের পরিবর্তে ক্লায়েন্টকে এখন বিশেষভাবে পরীক্ষা করতে হবে 204
এবং সেই ক্ষেত্রে শরীরের ডিকোডিং এড়িয়ে যাওয়া উচিত। কুঁড়ে ক্লায়েন্ট পরিবর্তে কি করে? খালি অ্যারে তৈরি করবেন? তারে কেন নেই, তাহলে? যদি ক্লায়েন্ট খালি অ্যারে তৈরি করে, 204 বোকা সংকোচনের একটি ফর্ম। null
পরিবর্তে ক্লায়েন্ট যদি ব্যবহার করে তবে কীটগুলি সম্পূর্ণ আলাদা ক্যান খোলে।
"কোনও ডেটা পাওয়া যায় নি" এর মতো কাস্টম ত্রুটি বার্তায় টুইটার 404 ব্যবহার করে।
রেফ: https://developer.twitter.com/en/docs/basics/response-codes.html
204 আরও উপযুক্ত। বিশেষত যখন আপনার ওয়েবসাইটটি সুরক্ষিত রয়েছে তা নিশ্চিত করার জন্য আপনার কাছে একটি সতর্কতা ব্যবস্থা রয়েছে, এই ক্ষেত্রে 404 বিভ্রান্তির কারণ হতে পারে কারণ আপনি জানেন না যে 404 টি সতর্কতা ব্যাকএন্ড ত্রুটি বা সাধারণ অনুরোধ তবে প্রতিক্রিয়া খালি।
আমি বলব, উভয়ই সত্যিই উপযুক্ত নয়। যেমনটি বলা হয়েছে - উদাহরণস্বরূপ @ অ্যানিব দ্বারা, আমিও মনে করি যে সমস্যার একটি অংশ একটি রেস্টস্টুল সার্ভিসের সাথে সম্পর্কিত একটি স্ট্যাটাস পরিবহনের জন্য এইচটিটিপি রেসপন্স কোড ব্যবহার করে দেখা দিয়েছে। আরআরইএসটি পরিষেবাদির নিজস্ব প্রসেসিংয়ের জন্য যে কোনও কিছু বলতে চাইলে REST নির্দিষ্ট কোডের মাধ্যমে পরিবহন করা উচিত।
আমি যুক্তি দিয়ে বলছি যে, HTTP সার্ভার যদি এমন কোনও পরিষেবা খুঁজে পায় যা প্রেরণের অনুরোধটির জবাব দিতে প্রস্তুত থাকে তবে এটি কোনও HTTP 404 দিয়ে সাড়া দেওয়া উচিত নয় - শেষ পর্যন্ত সার্ভারের মাধ্যমে কিছু পাওয়া গিয়েছিল - যতক্ষণ না স্পষ্টভাবে বলা হয় অনুরোধটি প্রক্রিয়া করে এমন পরিষেবা।
এর একটি মুহূর্ত জন্য অনুমান নিম্নলিখিত URL- করা যাক: http://example.com/service/return/test
।
404
তবে সঠিক। একই কথা সত্য, যদি এটি এই ধরণের ফাইলটি সরবরাহ করতে কোনও ধরণের পরিষেবা জিজ্ঞাসা করে এবং সেই পরিষেবাটি জানায় যে সেই নামের কিছুই বিদ্যমান নেই।পরিষেবা থেকে কোনও প্রতিক্রিয়া ছাড়াই স্পষ্টভাবে আলাদা আচরণের প্রয়োজন হয়, এইচটিটিপি সার্ভার কেবল তিনটি জিনিস বলতে পারে:
503
অনুরোধটি পরিচালনা করার কথা বলে যদি পরিষেবাটি চলছে না বা সাড়া দিচ্ছে;200
অন্যথায় এইচটিটিপি সার্ভারটি আসলে অনুরোধটি পূরণ করতে পারে - পরে পরিষেবাটি কী বলবে তা বিবেচনাধীন নয়;400
বা 404
এমন কোনও পরিষেবা নেই বলে বোঝানোর জন্য ("বিদ্যমান তবে অফলাইনে থাকা" এর বিপরীতে) এবং অন্য কোনও কিছুই পাওয়া যায় নি।প্রশ্নটিতে ফিরে আসার জন্য: আমি মনে করি যে সবচেয়ে পরিষ্কার পদ্ধতিটি এইচটিটিপি আগে কোনও মন্তব্য ছাড়া কোনও প্রতিক্রিয়া কোড ব্যবহার না করা। যদি পরিষেবাটি উপস্থিত থাকে এবং প্রতিক্রিয়া জানায়, HTTP কোডটি 200 হওয়া উচিত The প্রতিক্রিয়ায় পরিষেবাটি পৃথক শিরোনামে ফিরে আসা স্থিতি থাকা উচিত - এখানে, পরিষেবা বলতে পারে
REST:EMPTY
উদাহরণস্বরূপ যদি এটি স্টাচ অনুসন্ধান করতে বলা হয়েছিল। এবং এই গবেষণা খালি ফিরে;REST:NOT FOUND
যদি এটি বিশেষভাবে স্টাফের জন্য জিজ্ঞাসা করা হত। "আইডি-এর মতো" - আইডি বা এন্ট্রি নং 24, ইত্যাদি দ্বারা কোনও ফাইলের নাম বা কোনও সংস্থান হতে পারে - এবং সেই নির্দিষ্ট সংস্থানটি পাওয়া যায় নি (সাধারণত, একটি নির্দিষ্ট সংস্থান অনুরোধ করা হয়েছিল এবং পাওয়া যায় নি);REST:INVALID
অনুরোধের যে কোনও অংশ এটি প্রেরণ করা হয়েছিল তা পরিষেবা দ্বারা স্বীকৃত নয়।(মনে রাখবেন যে এইচটিটিপি প্রতিক্রিয়া কোডগুলির মতো একই মান বা শব্দগুচ্ছ থাকতে পারে, সেগুলি চিহ্নিত করার উদ্দেশ্যে উদ্দেশ্য হিসাবে আমি এগুলিকে "আরএসটি:" দিয়ে উপসর্গ করেছিলাম) তবে তারা সম্পূর্ণ পৃথক)
আসুন উপরের ইউআরএল ফিরে ফিরে আসুন এবং কেস বি পরিদর্শন করুন যেখানে পরিষেবাটি এইচটিটিপি সার্ভারকে নির্দেশ করে যে এটি নিজেই এই অনুরোধটি পরিচালনা করে না তবে এতে প্রবেশ করে SERVICE
। এইচটিটিপি কেবল এটি যা দিয়ে তা হস্তান্তর করে SERVICE
, return/test
অংশটি যেটি হ্যান্ডেল করে তা সম্পর্কে কিছুই জানে না SERVICE
। যে সেবা চালু থাকলেও, HTTP- র ফেরত পাঠাবেন 200
যেমন প্রকৃতপক্ষে কিছু খুঁজে পাইনি অনুরোধ হ্যান্ডেল করতে।
দ্বারা প্রত্যাবর্তিত স্থিতি SERVICE
(এবং যা উপরে বলা হয়েছে, আলাদা শিরোনামে দেখতে চাই) আসলে কোন পদক্ষেপটি প্রত্যাশিত তার উপর নির্ভর করে:
return/test
কোনও নির্দিষ্ট উত্সের জন্য জিজ্ঞাসা করে: যদি এটি বিদ্যমান থাকে তবে এটিকে একটি স্থিতি সহ ফিরিয়ে দিন REST:FOUND
; যদি সেই সংস্থানটি বিদ্যমান না থাকে তবে ফিরে আসুন REST:NOT FOUND
; এটি আবার বাড়ানো যেতে পারে REST:GONE
যদি আমরা জানি যদি এটি একবারে বিদ্যমান ছিল এবং ফিরে আসবে না, এবং REST:MOVED
যদি আমরা জানি এটি হলিউডে গেছেreturn/test
কোনও অনুসন্ধান বা ফিল্টার-জাতীয় অপারেশন হিসাবে বিবেচনা করা হয়: যদি ফলাফল সেটটি খালি থাকে তবে অনুরোধ করা ধরণের একটি খালি সেট এবং একটি স্থিতি ফিরিয়ে দিন REST:EMPTY
; অনুরোধ করা ধরণের ফলাফলগুলির একটি সেট এবং এর স্থিতিREST:SUCCESS
return/test
কোনও অপারেশন এটিকে পুনরায় সাজানো না হয় SERVICE
: REST:ERROR
যদি এটি সম্পূর্ণরূপে ভুল হয় (যেমন, একটি টাইপোর মতো retrun/test
), বা REST:NOT IMPLEMENTED
যদি পরে এটির জন্য পরিকল্পনা করা হয় তবে ফিরে আসুন ।এই ভিন্নতা দুটি ভিন্ন জিনিস মিশ্রণের চেয়ে অনেক পরিষ্কার er এটি ডিবাগিংকে আরও সহজ এবং প্রসেসিংকে আরও কিছুটা জটিল করে তুলবে, যদি তা না হয় তবে।
সমস্যা এবং আলোচনার উদ্ভব ঘটেছে যে এইচটিটিপি রেসপন্স কোডগুলি এমন কোনও পরিষেবার স্থিতি চিহ্নিত করার জন্য ব্যবহৃত হচ্ছে যার ফলাফল এইচটিটিপি দ্বারা পরিবেশন করা হয়েছে, বা এইচটিএইচ চিহ্নিত করতে। এটি নিজেই এইচটিটিপি সার্ভারের আওতায় নেই। এই তাত্পর্য কারণে, প্রশ্নের উত্তর দেওয়া যাবে না এবং সমস্ত মতামত অনেক আলোচনার বিষয়।
কোনও পরিষেবা দ্বারা প্রক্রিয়াকৃত একটি অনুরোধের অবস্থা এবং এইচটিটিপি সার্ভারটি আসলেই করা উচিত নয় (আরএফসি 6919) কোনও HTTP প্রতিক্রিয়া কোড দিয়ে দেওয়া উচিত। এইচটিটিপি কোড SHOULD (আরএফসি 2119) কেবল এইচটিটিপি সার্ভারের নিজস্ব সুযোগ থেকে দিতে পারে এমন তথ্য ধারণ করে: যথা, অনুরোধটি প্রক্রিয়া করার জন্য পরিষেবাটি পাওয়া গেছে কিনা।
পরিবর্তে, কোনও গ্রাহককে যে অনুরোধটি প্রকৃতপক্ষে অনুরোধটি প্রক্রিয়াকরণ করছে সেবার কাছে অনুরোধের অবস্থা সম্পর্কে বলতে কোনও আলাদা উপায়ে ব্যবহার করা উচিত। আমার প্রস্তাবটি একটি নির্দিষ্ট শিরোলেখের মাধ্যমে এটি করা। আদর্শভাবে, শিরোনামের নাম এবং এর বিষয়বস্তু উভয়ই একটি মানদণ্ড অনুসরণ করে যা গ্রাহকদের পক্ষে থিসের প্রতিক্রিয়াগুলির সাথে কাজ করা সহজ করে তোলে।
আরএফসি 7231 - পৃষ্ঠা59 অনুসারে ( https://tools.ietf.org/html/rfc7231# পৃষ্ঠা -59 ) 404 স্থিতি কোড প্রতিক্রিয়ার সংজ্ঞাটি হ'ল:
6.5.4। 404 পাওয়া যায় নি 404 (পাওয়া যায় না) স্থিতি কোডটি নির্দেশ করে যে মূল উত্সটি লক্ষ্য সংস্থানটির জন্য বর্তমান প্রতিনিধিত্ব খুঁজে পায় নি বা এটি বিদ্যমান রয়েছে তা প্রকাশ করতে রাজি নয়। একটি 404 স্থিতি কোডটি প্রতিনিধিত্বের এই অভাব অস্থায়ী বা স্থায়ী কিনা তা নির্দেশ করে না; 410 (গন) স্থিতি কোডটি 404 এর চেয়ে বেশি পছন্দ করা হয় যদি মূল সার্ভারটি সম্ভবত কিছু কনফিগারযোগ্য উপায়ে জেনে থাকে যে শর্তটি স্থায়ী হওয়ার সম্ভাবনা রয়েছে। একটি 404 প্রতিক্রিয়া ডিফল্ট হিসাবে ক্যাশেযোগ্য; উদাহরণস্বরূপ, অন্যথায় পদ্ধতি সংজ্ঞা বা স্পষ্ট ক্যাশে নিয়ন্ত্রণ দ্বারা নির্দেশিত না হলে ([আরএফসি 7234] এর বিভাগ 4.2.2 দেখুন)।
এবং মূল জিনিসটি যা সন্দেহ নিয়ে আসে তা হ'ল উপরের প্রসঙ্গে সংস্থানগুলির সংজ্ঞা। একই আরএফসি (7231) অনুসারে সংস্থানটির সংজ্ঞাটি হ'ল:
সংস্থানসমূহ: এইচটিটিপি অনুরোধের লক্ষ্যটিকে একটি "রিসোর্স" বলা হয়। এইচটিটিপি কোনও সংস্থার প্রকৃতি সীমাবদ্ধ করে না; এটি কেবলমাত্র একটি ইন্টারফেসকে সংজ্ঞায়িত করে যা সংস্থানসমূহের সাথে ইন্টারঅ্যাক্ট করতে ব্যবহৃত হতে পারে। প্রতিটি সংস্থান একটি ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার (ইউআরআই) দ্বারা চিহ্নিত করা হয়েছে, [আরএফসি 7230] এর ২.7 অনুচ্ছেদে বর্ণিত। যখন কোনও ক্লায়েন্ট কোনও HTTP / 1.1 অনুরোধ বার্তাটি তৈরি করে, তখন এটি লক্ষ্যবস্তু ইউআরআইকে বিভিন্ন ফর্মের একটিতে প্রেরণ করে, ([আরএফসি 7230] এর ধারা 5.3) হিসাবে সংজ্ঞায়িত করা হয়েছে। যখন একটি অনুরোধ পাওয়া যায়, সার্ভার লক্ষ্য সংস্থার জন্য একটি কার্যকর অনুরোধ ইউআরআই পুনর্গঠন করে ([আরএফসি 7230 এর বিভাগ 5.5)। এইচটিটিপি-র একটি ডিজাইনের লক্ষ্য হ'ল অনুরোধ শব্দার্থক থেকে সংস্থানকরণ সনাক্তকরণকে পৃথক করা, যা অনুরোধ পদ্ধতিতে (বিভাগ 4) অনুরোধের শব্দার্থকগুলি এবং কয়েকটি অনুরোধ-সংশোধনকারী শিরোনামের ক্ষেত্রগুলি (বিভাগ 5) ভেস্ট করে সম্ভব হয়েছে।
সুতরাং আমার বুঝতে 404 স্থিতি কোডটি খালি ফলাফল সহ সফল জিইটি অনুরোধে ব্যবহার করা উচিত নয় (উদাহরণস্বরূপ: নির্দিষ্ট ফিল্টারটির জন্য কোনও ফলাফল ছাড়াই একটি তালিকা)
এই জাতীয় বিষয়গুলি বিষয়গত হতে পারে এবং উভয় পক্ষেই কিছু আকর্ষণীয় এবং বিভিন্ন শক্ত যুক্তি রয়েছে। তবে [আমার মতে] নিখোঁজ ডেটার জন্য 404 ফিরিয়ে দেওয়া সঠিক নয় । এটি পরিষ্কার করার জন্য এখানে একটি সরলীকৃত বিবরণ দেওয়া হয়েছে:
কিছুই ভেঙে যায় নি, শেষ পয়েন্টটি খুঁজে পাওয়া গেল, এবং টেবিল এবং কলামগুলি পাওয়া গেল যাতে ডিবি জিজ্ঞাসাবাদ করেছিল এবং ডেটা "সাফল্যের সাথে" ফিরে এসেছে!
এখন - সেই "সফল প্রতিক্রিয়া" -এর ডেটা রয়েছে বা না তা বিবেচনা না করে আপনি "সম্ভাব্য" ডেটার প্রতিক্রিয়া চেয়েছিলেন এবং "সম্ভাব্য" ডেটা সহ সেই প্রতিক্রিয়া পূর্ণ হয়েছিল। নাল, খালি ইত্যাদি বৈধ ডেটা।
200 এর অর্থ হ'ল আমরা যা কিছু অনুরোধ করেছিলাম তা সফল হয়েছিল। আমি ডেটা অনুরোধ করছি, এইচটিটিপি / আরইএসটি-তে কোনও ভুল হয়নি, এবং ডেটা (খালি হলেও) ফেরত পেলে আমার "ডেটার জন্য অনুরোধ" সফল হয়েছিল।
একটি 200 ফিরিয়ে দিন এবং প্রতিটি নির্দিষ্ট দৃশ্যের এটির ওয়্যারেন্ট হিসাবে অনুরোধকারী খালি ডেটা নিয়ে কাজ করে!
এই উদাহরণ বিবেচনা করুন:
এই ডেটা খালি থাকা সম্পূর্ণ বৈধ। এর অর্থ হ'ল ব্যবহারকারীর কোনও লঙ্ঘন নেই। এটি 200 হিসাবে এটি সমস্ত বৈধ, ততক্ষণে আমি এটি করতে পারি:
আপনার কোনও লঙ্ঘন নেই, একটি ব্লুবেরি মাফিন রয়েছে!
যদি আপনি এটিকে 404 বলে মনে করেন তবে আপনি কী বলছেন? ব্যবহারকারীর লঙ্ঘন খুঁজে পাওয়া গেল না? এখন, ব্যাকরণগতভাবে এটি সঠিক, তবে REST বিশ্বে এটি ঠিক সঠিক নয় যে অনুরোধটি সম্পর্কে সাফল্য বা ব্যর্থতা ছিল। এই ব্যবহারকারীর জন্য "ইনফ্রাকশন" ডেটা সাফল্যের সাথে পাওয়া যেতে পারে, শূন্য লঙ্ঘন রয়েছে - একটি বৈধ রাষ্ট্রের প্রতিনিধিত্বকারী একটি আসল সংখ্যা।
[চটকদার নোট ..]
আপনার শিরোনামে, আপনি অবচেতনভাবে সম্মতি দিচ্ছেন যে 200 সঠিক প্রতিক্রিয়া:
একটি বৈধ অনুরোধের জন্য যথাযথ REST প্রতিক্রিয়া কোডটি কী তবে খালি ডেটা?
সাবজেক্টিভিটি এবং কৌতুকপূর্ণ পছন্দ নির্বিশেষে কোন স্থিতি কোডটি ব্যবহার করবেন তা চয়ন করার জন্য এখানে কয়েকটি বিষয় বিবেচনা করতে হবে:
প্রতিক্রিয়া সামগ্রীটিকে একটি সাধারণ এনাম দিয়ে এনকোড করুন যা ক্লায়েন্টকে এটি স্যুইচ করতে এবং সেই অনুসারে যুক্তিযুক্ত কাঁটাচামচ করতে দেয়। আমি নিশ্চিত নই যে আপনার ক্লায়েন্ট কীভাবে একটি "ডেটা পাওয়া যায়নি" 404 এবং একটি "ওয়েব সংস্থান খুঁজে পাওয়া যায় না" 404 এর মধ্যে পার্থক্যটি পার্থক্য করবে? আপনি চাইছেন না যে কেউ জেড / 9 ব্যবহারকারীর কাছে ব্রাউজ করুন এবং ক্লায়েন্টকে অবাক করে দিয়ে অনুরোধটি বৈধ ছিল তবে কোনও ডেটা ফেরেনি।
410 ব্যবহার করবেন না কেন? এটি প্রস্তাবিত সংস্থানটি আর বিদ্যমান নেই এবং ক্লায়েন্টটি আপনার ক্ষেত্রে সেই সংস্থানটির জন্য কোনও অনুরোধ করবেন না বলে আশা করা যায় users/9
।
410 সম্পর্কে আপনি এখানে আরও বিস্তারিত জানতে পারেন: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
দুঃখের বিষয় যে এত সহজ এবং সুস্পষ্টভাবে কিছু সংজ্ঞায়িত হয়ে এই থ্রেডে "মতামত ভিত্তিক" হয়েছে।
একটি এইচটিটিপি সার্ভার কেবল "সত্তা" সম্পর্কে জানে, যা কোনও সামগ্রীর বিমূর্ততা, এটি একটি স্ট্যাটিক ওয়েব পৃষ্ঠা, অনুসন্ধান ফলাফলের তালিকা, অন্যান্য সত্তার একটি তালিকা, কোনও জিনিসের জসন বিবরণ, একটি মিডিয়া ফাইল ইত্যাদি etc
এই জাতীয় প্রতিটি সত্তা অনন্য ইউআরএল দ্বারা সনাক্তকরণযোগ্য হিসাবে প্রত্যাশিত
কোনও সার্ভার যদি প্রদত্ত ইউআরএল দ্বারা কোনও সংস্থান খুঁজে পায় তবে তা কী তা বিবেচনা করে না বিষয়বস্তুগুলি - 2 জি ডেটা, নাল, {}, [] - যতক্ষণ না এটি বিদ্যমান থাকবে, 200 হবে But তবে যদি এই সত্তাটি হয় সার্ভারটির কাছে জানা নেই, 404 "পাওয়া যায়নি" ফিরিয়ে দেওয়া অনুমিত।
একটি বিভ্রান্তি বিকাশকারীদের কাছ থেকে মনে হয় যারা মনে করেন যদি অ্যাপ্লিকেশনটির নির্দিষ্ট পথের আকারের জন্য কোনও হ্যান্ডলার রয়েছে, তবে এটি ত্রুটি হওয়া উচিত নয়। এইচটিটিপি প্রোটোকলের দৃষ্টিতে সার্ভারের অভ্যন্তরীণ অঞ্চলে কী ঘটেছিল তা বিচার্য নয় (যেমন ডিফল্ট রাউটার প্রতিক্রিয়া দেখিয়েছে বা নির্দিষ্ট পথের আকারের জন্য কোনও হ্যান্ডলার কিনা) যতক্ষণ না সার্ভারে কোনও সাদৃশ্য সত্তা নেই the অনুরোধ করা ইউআরএল (যা এমপি 3 ফাইল, ওয়েবপেজ, ব্যবহারকারী বস্তুর অনুরোধ করেছে), যা বৈধ সামগ্রী (খালি বা অন্যথায়) ফিরিয়ে দেবে, এটি অবশ্যই 404 (বা 410 ইত্যাদি) হওয়া উচিত।
বিভ্রান্তির আরেকটি বিষয় "ডেটা নেই" এবং "কোনও সত্তা নয়" বলে মনে হচ্ছে। পূর্ববর্তীটি কোনও সত্তার বিষয়বস্তু এবং তার অস্তিত্ব সম্পর্কে পরে থাকে।
উদাহরণ 1:
উদাহরণ 2:
উদাহরণ 3:
404 কোনও ক্লায়েন্টের জন্য খুব বিভ্রান্তিকর হবে যদি আপনি কেবল প্রতিক্রিয়াতে কোনও ডেটা না থাকায় ফিরে আসেন।
আমার জন্য, খালি শরীরের সাথে রেসপন্স কোড 200 যথেষ্ট বুঝতে যথেষ্ট যে সবকিছু নিখুঁত তবে প্রয়োজনীয়তার সাথে মিলে এমন কোনও ডেটা নেই।
মাইক্রোসফ্টের মতে: এএসপি.নেট কোর ওয়েব এপিআই-তে কন্ট্রোলার অ্যাকশন রিটার্নের ধরণগুলি , প্রায় নীচে নীচে স্ক্রোল করুন, আপনি ডাটাবেসে পাওয়া যায় নি এমন কোনও বস্তুর সাথে সম্পর্কিত 404 সম্পর্কে নীচের ব্লার্ব পেয়েছেন। এখানে তারা প্রস্তাব দেয় যে একটি 404 খালি ডেটার জন্য উপযুক্ত।
যেমন অনেকের দ্বারা বলা হয়েছে, 404 বিভ্রান্তিমূলক এবং অনুরোধ ইউরি উপস্থিত না থাকলে বা অনুরোধকৃত ইউরি অনুরোধ করা সংস্থানটি পেতে না পারলে এটি ক্লায়েন্টকে বৈষম্য করতে দেয় না।
200 টি স্থিতিতে রিসোর্স ডেটা থাকবে বলে আশা করা যায় - তাই এটি সঠিক পছন্দ নয়। 204 স্থিতির অর্থ পুরোপুরি অন্য কিছু এবং জিইটি অনুরোধের প্রতিক্রিয়া হিসাবে ব্যবহার করা উচিত নয়।
অন্য সমস্ত বিদ্যমান স্থিতি প্রযোজ্য নয়, এক কারণে বা অন্য কারণে।
আমি একাধিক জায়গায় এই বিষয়টি বার বার আলোচিত হতে দেখেছি। আমার জন্য, এটি বেদনাদায়কভাবে স্পষ্ট যে বিষয়টির চারপাশে বিভ্রান্তি দূর করতে, একটি উত্সর্গীকৃত সাফল্যের স্থিতি প্রয়োজন। " 209 - প্রদর্শনের কোনও সংস্থান নেই " এর মতো কিছু ।
এটি 2XX স্থিতি হবে কারণ একটি আইডি না পাওয়া একটি ক্লায়েন্ট ত্রুটি হিসাবে বিবেচনা করা উচিত নয় (যদি ক্লায়েন্টগুলি সার্ভারের ডিবিতে থাকা সমস্ত কিছু জানত তবে তাদের সার্ভারের কাছে কিছু জিজ্ঞাসা করার দরকার পড়েনি, তাই না?)। এই উত্সর্গীকৃত স্থিতি অন্যান্য স্ট্যাটাসগুলি ব্যবহার করে বিতর্কিত সমস্ত সমস্যার সমাধান করবে।
একমাত্র প্রশ্ন: আমি কীভাবে আরএফসিটিকে একটি মান হিসাবে গ্রহণ করব?