একটি বৈধ অনুরোধের জন্য যথাযথ REST প্রতিক্রিয়া কোডটি কী তবে খালি ডেটা?


331

উদাহরণস্বরূপ, আপনি একটি জিইটি অনুরোধ চালান users/9তবে # 9 আইডি সহ কোনও ব্যবহারকারী নেই। সেরা প্রতিক্রিয়া কোড কোনটি?

  • 200 ঠিক আছে
  • 202 স্বীকৃত
  • 204 কোনও সামগ্রী নেই
  • 400 খারাপ অনুরোধ
  • 404 পাওয়া যায়নি

19
ইঙ্গিত: আপনি ব্যবহারকারী 9 পেয়েছেন?
ক্রিস পিফহল

42
ইঙ্গিত 2: সুতরাং ব্যবহারকারী 9 পাওয়া যায় নি ?
টমাসজ নুরকিউইচ

18
@ আইএমবি কে বলছে 204? "কোনও বিষয়বস্তু" ইঙ্গিত দেয় না যে সত্তা আপনি সন্ধান করছেন সেটির উপস্থিতি রয়েছে, তবে এর কোনও উপস্থাপনা নেই। উদাহরণস্বরূপ, যদি আইডি 15 সহ ব্লগের কোনও মন্তব্য না থাকে এবং আপনি 15 নম্বর ব্লগের মন্তব্যগুলির জন্য একটি খালি তালিকাটি ফিরিয়ে দিতে চান না: "/ ব্লগ / 15 / মন্তব্য" নো কনন্টেন্টকে ফিরে আসবে। অন্যদিকে যদি ব্লগ 15 উপস্থিত থাকে তবে '404 পাওয়া যায় না' আরও উপযুক্ত।
ক্রিস পিফোহল

12
@ ক্রিসফোল আপনার অর্থ বোঝায়নি "। অন্যদিকে ব্লগ 15 উপস্থিত না থাকলে , '404 পাওয়া যায় না' আরও উপযুক্ত"
জিডোরন মনিকে

15
আমি অবশ্যই @ জিডোরন করেছি! :) ধন্যবাদ। দুঃখজনকভাবে আমি সম্পাদনা করতে এবং ঠিক করতে প্রায় তিন বছর বেশি দেরী হয়েছি।
ক্রিস পিফহল

উত্তর:


249

টিএল; ডিআর: ব্যবহার করুন 404

দেখা এই ব্লগ । এটি খুব ভালভাবে ব্যাখ্যা করে।

ব্লগের মন্তব্যগুলির সংক্ষিপ্তসার 204 :

  1. 204 No Content কোনও ব্রাউজারের প্রতিক্রিয়া কোড হিসাবে মারাত্মকভাবে কার্যকর নয় (যদিও এইচটিটিপি অনুসারে ব্রাউজারগুলির এটি 'ভিউ পরিবর্তন করবেন না' প্রতিক্রিয়া কোড হিসাবে বুঝতে হবে)।
  2. 204 No Content হয় তবে Ajax ওয়েব পরিষেবাগুলি যা কিছু আসতে না করেও সাফল্য ইঙ্গিত করতে পারেন জন্য খুবই উপযোগী। (বিশেষত ক্ষেত্রে ক্ষেত্রেDELETE বা POSTএর মতামতের প্রয়োজন হয় না)।

সুতরাং, আপনার প্রশ্নের উত্তরটি 404আপনার ক্ষেত্রে ব্যবহার ।204একটি বিশেষায়িত রেপোনাস কোড যা আপনার প্রায়শই একটি এর প্রতিক্রিয়া হিসাবে কোনও ব্রাউজারে ফিরে আসবে না GET

অন্যান্য রিস্পন্স কোডগুলো যে এর চেয়ে আরও কম উপযুক্ত 204এবং404 :

  1. 200আপনি যা সাফল্যের সাথে নিয়ে এসেছেন তার দেহের সাথে ফিরে আসা উচিত। আপনি যে সত্তাটি আনছেন সেটির অস্তিত্ব নেই যখন উপযুক্ত নয়।
  2. 202সার্ভার যখন কোনও বস্তুর উপর কাজ শুরু করে তবে অবজেক্টটি এখনও সম্পূর্ণ প্রস্তুত নয় isn't অবশ্যই এখানে মামলা হয় না। একটি GETঅনুরোধের প্রতিক্রিয়া হিসাবে আপনি 9 ব্যবহারকারী তৈরি করা শুরু করেননি বা শুরু করবেন না । যা সকল ধরণের নিয়ম ভঙ্গ করে।
  3. 400দুর্বল ফর্ম্যাট করা HTTP অনুরোধের প্রতিক্রিয়াতে ব্যবহৃত হয় (উদাহরণস্বরূপ, বিকৃত HTTP শিরোনাম, ভুলভাবে অর্ডার করা বিভাগগুলি ইত্যাদি)। এটি প্রায় অবশ্যই আপনি যে কোনও ফ্রেমওয়ার্ক ব্যবহার করছেন তা দ্বারা পরিচালিত হবে। আপনি স্ক্র্যাচ থেকে নিজের সার্ভারটি না লিখে আপনার এটিকে মোকাবেলা করার দরকার নেই। সম্পাদনা করুন : নতুন আরএফসিগুলি এখন শব্দার্থকভাবে অবৈধ অনুরোধগুলির জন্য 400 ব্যবহারের অনুমতি দেয়।

এইচটিটিপি স্থিতি কোডগুলির উইকিপিডিয়া বর্ণনা বিশেষত সহায়ক। আপনি HTTP / 1.1 আরএফসি 2616 নথিতে www.w3.org এ সংজ্ঞাটি দেখতেও পারেন


8
দ্রষ্টব্য: ২০০ এর দশকে প্রতিক্রিয়া কোডগুলি সাফল্যের ইঙ্গিত দেয়। 400 এর প্রতিক্রিয়া কোডগুলি ব্যর্থতা নির্দেশ করে। এক এবং দুটি পয়েন্টের সারসংক্ষেপ, 204প্রতিক্রিয়া কোড সম্পর্কিত (কোনও সামগ্রী নেই)।
ক্রিস পিফহল

226
-1 আমি যেমন সফল কলটির প্রতিক্রিয়া হিসাবে 404 এর তীব্র বিরোধিতা করি যার আর ফেরার কোনও রেকর্ড নেই। নন-ওয়েব অ্যাপ্লিকেশনটির জন্য কোনও এআইপিআইয়ের সাথে বিকাশকারী হিসাবে, আমি যে এপিআই এর শেষ পয়েন্টটি কল করেছিলাম তা কেন ছিল না তা অনুসন্ধান করার জন্য আমি API এর বিকাশকারীদের সাথে যোগাযোগ করার কয়েক ঘন্টা নষ্ট করেছি, যখন বাস্তবে এটি ছিল না, এটির ঠিক কোনও কিছুই ছিল না রিপোর্ট করতে তথ্য। একটি ব্রাউজারের জন্য 204 বিশেষভাবে কার্যকর না হওয়ার সাথে সম্পর্কিত, এটি কুকুরটিকে দুলিয়ে দেওয়ার মতো কিছুটা হ'ল আমাদের স্মার্ট ডিভাইসগুলির মহাবিশ্বের এপিআই এন্ডপয়েন্টগুলির সর্বাধিক ব্যবহারগুলি ব্রাউজার ভিত্তিক নয় এবং সম্ভবত এজেএক্স ব্যবহার করে। দূরে দূরে নিতে দুঃখিত।
ম্যাট ক্যাস্যাট

38
@ ম্যাথেজপ্যাট্রিকক্যাশট আপনি যেমন খুশি তেমন ডাউনওয়েতে নিরপেক্ষ। আমি এখন অবশেষে বুঝতে পারি কেন লোকেরা আমাকে নিম্নচাপ দিচ্ছে, তবে যুক্তিটি এখনও ভুল। 404 পাওয়ার পরে এটির অর্থ এই নয় যে রুটটি কোনও তাত্পর্যপূর্ণ নয়, এর অর্থ এই স্থানে কোনও সংস্থান নেই। দাড়ি. আপনি যদি অনুরোধ করছেন /badurlবা /user/9যখন এই জাতীয় ব্যবহারকারীর অস্তিত্ব না থাকে তবে এটি সত্য । একজন বিকাশকারী 'খুঁজে পাওয়া যায় না' এর চেয়ে আরও ভাল কারণের বাক্যাংশ যোগ করে সহায়তা করতে পারে তবে এটি প্রয়োজন হয় না।
ক্রিস পিফোহল

19
@Crisfole আমি ভিন্নমত পোষণ করার (যদিও downvote পড়া রাখুন) আনত করছি, ভিত্তিক বন্ধ 404 এর W3 সংজ্ঞা , নির্দিষ্টভাবে The server has not found anything matching the Request-URI। ওয়েব / অ্যাপ্লিকেশন সার্ভারটি আসলে একটি অনুরোধ-ইউআরআইয়ের সাথে মিলিত একটি অ্যাকশন পেয়েছে, যদিও ডিবি সার্ভারটি নেই। তবে এটি আরও বলেছে This status code is commonly used when [...] no other response is applicable, সুতরাং আমি মনে করি যে এটির ব্যবহারটিকে কিছুটা বৈধতা দেয় (যদিও আমি এটির সাথে / তার সাথে একমত নাও)।
ডেভিন

8
আমি মনে করি না যে আপনি যে পয়েন্টটি করছি তার দিকে আপনি সম্বোধন করছেন: 404 বিপজ্জনকভাবে বিভ্রান্ত করছে। কলারের উপর নির্ভরযোগ্য কারণের বাক্যাংশ বা প্রতিক্রিয়ার মূল অংশটি যাচাই করার অর্থ আপনি স্ট্যাটাস কোডকে বিশ্বাস করছেন না, এই ক্ষেত্রে এটি কার্যকর নয়।
অ্যাড্রিয়ান বেকার

364

আমি খালি ডেটা সহ 204 বা 200 এর পক্ষে 404 এর তীব্র বিরোধিতা করছি। অথবা কমপক্ষে 404 সহ একটির প্রতিক্রিয়া সত্তা ব্যবহার করা উচিত।

অনুরোধটি গ্রহণ করা হয়েছিল এবং সঠিকভাবে প্রক্রিয়া করা হয়েছে - এটি সার্ভারে অ্যাপ্লিকেশন কোডটি ট্রিগার করেছিল, সুতরাং কেউ সত্যই বলতে পারে না যে এটি ক্লায়েন্ট ত্রুটি ছিল এবং এইভাবে ক্লায়েন্ট ত্রুটি কোডের পুরো ক্লাসটি (4XX) উপযুক্ত নয়।

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

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

-> অ্যাপ্লিকেশনগুলির জন্য যা তাদের তথ্যের মান সম্পর্কে যত্নশীল, 404 প্রতিক্রিয়া সত্তা ছাড়াই অতএব অচল।

এছাড়াও, অনেক ক্লায়েন্ট ফ্রেমওয়ার্ক 404-এ সাড়া দেয় যাতে কোনও প্রশ্ন জিজ্ঞাসা না করে একটি ব্যতিক্রম ছুঁড়ে ফেলে। এটি ক্লায়েন্ট বিকাশকারীকে এই ব্যতিক্রমটি ধরতে, এটিকে মূল্যায়ন করতে এবং তারপরে সিদ্ধান্ত নিতে বাধ্য করে যে এটি কোনও ত্রুটি হিসাবে লগ করতে হবে যা উদাহরণস্বরূপ একটি মনিটরিং উপাদান বা এটি উপেক্ষা করবেন কিনা ignore সেটা আমার কাছেও সুন্দর লাগছে না।

204 এর বেশি 404 এর সুবিধা হ'ল এটি একটি প্রতিক্রিয়া সত্তাকে ফিরিয়ে দিতে পারে যাতে অনুরোধ করা সংস্থানটি কেন পাওয়া যায় নি সে সম্পর্কে কিছু তথ্য থাকতে পারে। তবে যদি তা সত্যিই প্রাসঙ্গিক হয়, তবে কেউ 200 ওকে প্রতিক্রিয়া ব্যবহার করার বিষয়টিও বিবেচনা করতে পারে এবং সিস্টেমটিকে এমনভাবে ডিজাইন করতে পারে যা পেডলোড ডেটার ত্রুটি প্রতিক্রিয়াগুলির জন্য অনুমতি দেয়। বিকল্পভাবে, একজন কলারকে কাঠামোগত তথ্য ফেরত দিতে 404 জবাবের পেডলোড ব্যবহার করতে পারেন। যদি তিনি উদাহরণস্বরূপ XML বা JSON এর পরিবর্তে এইচটিএমএল পৃষ্ঠা পেয়ে থাকেন যা তিনি পার্স করতে পারেন, তবে এটি একটি ভাল সূচক যে কলকারীর দৃষ্টিকোণ থেকে বৈধ হতে পারে "কোনও ফলাফল নয়" জবাবের পরিবর্তে প্রযুক্তিগত কিছু ভুল হয়েছে। বা কেউ তার জন্য এইচটিটিপি রেসপন্স শিরোনাম ব্যবহার করতে পারে।

তবুও আমি খালি সাড়া দিয়ে একটি 204 বা 200 পছন্দ করব। এইভাবে অনুরোধটির প্রযুক্তিগত সম্পাদনের স্থিতি অনুরোধের যৌক্তিক ফলাফল থেকে পৃথক করা হয়। 2XX এর অর্থ "প্রযুক্তিগত সম্পাদন ঠিক আছে, এটি ফলাফল, এটির সাথে ডিল করুন"।

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

আরেকটি দ্রুত উপমা: "কোনও ফলাফল পাওয়া যায়নি" এর জন্য ৪০৪ ফিরিয়ে নেওয়া যদি কোনও এসকিউএল কোয়েরি কোনও ফল না দেয় তবে ডেটাবেস সংযোগপ্রকাশ ছোঁড়ার মতো। এটি কাজটি সম্পন্ন করতে পারে, তবে প্রচুর সম্ভাব্য প্রযুক্তিগত কারণ রয়েছে যা একই ব্যতিক্রমকে ফেলে দেয় যা পরে বৈধ ফলাফলের জন্য ভুল হবে।


30
একটি 'পাওয়া যায়নি' এর প্রযুক্তিগত কারণগুলি সার্ভার ত্রুটি হিসাবেও পরিচিত। সেগুলি 500 এর দশকে হওয়া উচিত। বিশেষত: "পরিষেবাটি পাওয়া যায় না" 503 Service Unavailable
ক্রিস পিফহল

43
প্রশ্নকারী একটি নির্দিষ্ট সংস্থান সম্পর্কেও জিজ্ঞাসা করছিলেন: একটি একক ব্যবহারকারী ( /usersরুট নয়, তবে /users/9, "# 9" হিসাবে পরিচিত ব্যবহারকারী), সুতরাং আপনার 'খালি ফলাফল সেট' তুলনাটি অর্থবোধ করে না। 404 এর অর্থ হ'ল বস্তুর অস্তিত্ব নেই।
ক্রিস পিফোহল

29
404 কেবলমাত্র সূচিত করে যে অনুরোধ করা সংস্থানটি (এই ক্ষেত্রে ব্যবহারকারী সংখ্যা 9) পাওয়া যায় নি। অ্যাপ্লিকেশন কোডটি বরখাস্ত করা হয়েছিল কি না এর সাথে এর কোনও যোগসূত্র নেই, ব্যাকএন্ড অ্যাপ্লিকেশন প্রতিক্রিয়া জানিয়েছিল কি না তার সাথে এর কোনও যোগসূত্র নেই। একটি ওয়েব সার্ভার যা প্রশ্নটি ছিল সে সম্পর্কে প্রশ্নটিতে বিপরীত প্রক্সি করার কোনও উল্লেখ ছিল না।
ক্রিস পিফহল

29
এই উত্তরের যুক্তি ভয়ঙ্করভাবে ভুল।
কর্ট স্পিন্ডার

20
404: ক্লায়েন্ট একটি প্রদত্ত সার্ভারের সাথে যোগাযোগ করতে সক্ষম হয়েছিল, তবে সার্ভারটি যা অনুরোধ করা হয়েছিল তা সন্ধান করতে পারে নি। আক্ষরিকভাবে: অনুরোধটি প্রাপ্ত হয়েছে, এটি সূক্ষ্ম এবং সঠিকভাবে ফর্ম্যাট হয়েছিল (খারাপ অনুরোধ 400), এটি সত্যায়িত বা জনসাধারণের (অননুমোদিত 401 / নিষিদ্ধ 403), কোনও অর্থ প্রদানের প্রয়োজন নেই (অর্থ প্রদানের প্রয়োজন 402), অনুরোধের পদ্ধতিটি জরিমানা ছিল (পদ্ধতি 405 অনুমোদিত নয়) ), অনুরোধটি গ্রহণ করলে সন্তুষ্ট হতে পারে (406 গ্রহণযোগ্য নয়)। ব্যবহারকারী যখন রিসোর্স পায় তখন 200 ওকে ব্যবহার করা উচিত। খালি কোনও সংস্থান নয়। 400 পরিসীমা ক্লায়েন্ট ত্রুটির জন্য 500 পরিসরটি সার্ভার ত্রুটির জন্য সংক্ষেপে: আপনার যুক্তি বন্ধ।
ডের্ক-জানুয়ারী

62

প্রথমদিকে, আমি ভেবেছিলাম একটি 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

কিছু পটভূমি:

  1. অনুসন্ধানটি একটি অ্যারে দেয়, এটির কোনও মিল নেই তবে এটিতে সামগ্রী রয়েছে: খালি অ্যারে

  2. 404 অবশ্যই ইউআরএলগুলির জন্য সবচেয়ে বেশি পরিচিত যা অনুরোধকৃত সার্ভার দ্বারা সমর্থিত নয়, তবে অনুপস্থিত সংস্থান আসলে একই রকম same
    যদিও /users/:nameএর সাথে মিল রয়েছে users/kyle, ব্যবহারকারী কাইল রিসোর্স উপলভ্য নয় তাই 404 এখনও প্রয়োগ হয়। এটি কোনও অনুসন্ধানের অনুসন্ধান নয়, এটি ডায়নামিক ইউআরএল দ্বারা প্রত্যক্ষ রেফারেন্স , সুতরাং এটি 404।

যাইহোক, আমার দুটি সেন্ট :)


9
একটি REST এপিআইয়ের জন্য আমার ওজনটিকে এই স্টাইলের পিছনে ফেলে দেওয়া হচ্ছে। কোনও ক্লায়েন্টকে / ব্যবহারকারী / কাইলের কাছে জিজ্ঞাসা করা উচিত না যদি না বলা হয় যে ব্যবহারকারী / ব্যবহারকারী বা / ব্যবহারকারীদের কলের মাধ্যমে রিসোর্সটি উপস্থিত থাকবে? নাম = কাইল
গ্যারি বারকার

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

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

দুজনের সমন্বয় কী? ধরে নিচ্ছি ব্যবহারকারীদের বন্ধু রয়েছে। / ব্যবহারকারীরা / কাইলি / বন্ধু হবে? নাম = ফ্রেড। কাইলের অস্তিত্ব নেই, তাহলে এই প্রতিক্রিয়াটি কি 404 হবে? বা এটি 200 হবে কারণ আমরা ঠিক কাইল সম্পর্কে যত্নবান নই, আমরা কেবল ফ্রেড নামের তার বন্ধুদের অনুসন্ধান করার বিষয়ে যত্নশীল?
JSextonn

আইএমও 4040 আয় করবে, এটি এটি একটি অবৈধ অনুরোধ: কাইলের অস্তিত্ব নেই, সুতরাং তার বন্ধুদের অনুসন্ধান করাও সম্ভব নয়।
জাস্টাস রোমিজন

23

যদি এটি প্রত্যাশিত হয় যে উত্সটি বিদ্যমান, তবে এটি খালি হতে পারে তবে আমি যুক্তি দিয়ে বলব যে উপস্থাপনের সাথে 200 ওকে পাওয়া সহজ হবে যা নির্দেশ করে যে বিষয়টি খালি রয়েছে।

সুতরাং আমি বরং / জিনিসগুলিকে OK "আইটেমগুলি" দিয়ে 200 ওকে ফিরিয়ে আনতে চাইছি: []} 204 এর তুলনায় কিছুই নেই, কারণ এইভাবে 0 টি আইটেম সহ একটি সংগ্রহের সাথে কেবল সংগ্রহের মতোই বিবেচনা করা যেতে পারে এটিতে আরও আইটেম।

আমি কেবল পুটস এবং মুছে ফেলার জন্য 204 কোনও সামগ্রী রেখে যাব না, যেখানে এমন ঘটনা হতে পারে যে সত্যিকারের কোনও উপস্থাপনা নেই is

যে ক্ষেত্রে / জিনিস / 9 সত্যিই বিদ্যমান নেই, একটি 404 উপযুক্ত।


1
দেখে মনে হচ্ছে আপনি আরপিসি নামক একটি আরও বিমূর্ত ফর্ম ব্যবহার করে কোনও এপিআইয়ের বিরুদ্ধে প্রোগ্রাম করা পছন্দ করেন। ক্রিয়াকলাপটি ঘনিষ্ঠভাবে অনুসরণ করে এবং কোনও উত্স ভিত্তিক ইউআরএল অনুসরণ করে সংস্থানগুলি অ্যাক্সেস করার পরিবর্তে customers/1/addressbook, আরপিসির উপায়টি হ'ল একটি এন্ডপয়েন্টটি কল করা GetCustomerAddressBookএবং হয় ডেটা গ্রহণ করা বা মূলত নালাগুলি এবং এইচটিটিপি এর জটিলতাগুলি নিয়ে এত চিন্তা করার দরকার নেই। উভয়েরই পক্ষে মতামত রয়েছে।
মাফিন ম্যান

2
@ দ্য মফিন ম্যান, আমি নিশ্চিত না যে আপনি কীভাবে আমি আরএসটি বা আরপিসি পছন্দ করি তা জানার ভান করতে পারবেন না, বা এইচটিটিপি জিইটি অনুরোধে কোন স্ট্যাটাস কোডটি ফিরিয়ে আনতে হবে তা নিয়ে আলোচনার সাথে কেন এটি প্রাসঙ্গিক।
j0057

204 ব্যবহার করার সময় আমার কিছু ভয়াবহ ক্যাশে সমস্যা ছিল Chrome এমনকি বিশ্বের সমস্ত নো-ক্যাশে শিরোনাম রয়েছে। আমি এই উত্তরের সাথে একমত, 200 টি ব্যবহারকারীর কাছে খালি অ্যারে / অবজেক্ট দিয়ে সেরা বলে মনে হচ্ছে।
জ্যাক

22

পূর্ববর্তী প্রকল্পগুলিতে, আমি 404 ব্যবহার করেছি 9 যদি ব্যবহারকারী 9 না থাকে তবে অবজেক্টটি পাওয়া যায় নি। সুতরাং 404 পাওয়া যায় না উপযুক্ত।

অবজেক্টের জন্য বিদ্যমান, তবে কোনও ডেটা নেই, 204 কোনও সামগ্রী উপযুক্ত হবে না। আমি মনে করি আপনার ক্ষেত্রে, বস্তুর নেই না যদিও বিদ্যমান।


14

ডাব্লু 3 পোস্ট অনুসারে ,

200 ঠিক আছে

অনুরোধটি সফল হয়েছে। প্রতিক্রিয়া সহ ফিরিয়ে দেওয়া তথ্যটি অনুরোধে ব্যবহৃত পদ্ধতির উপর নির্ভরশীল

202 স্বীকৃত

প্রক্রিয়াজাতকরণের জন্য অনুরোধটি গ্রহণ করা হয়েছে, তবে প্রক্রিয়াজাতকরণ শেষ হয়নি।

204 কোনও সামগ্রী নেই

সার্ভারটি অনুরোধটি পূরণ করেছে তবে কোনও সত্তা-দেহ ফেরত দেওয়ার দরকার নেই এবং সম্ভবত আপডেট মেন্টেরফর্মেশনটি ফিরে আসতে চাইবে।

400 খারাপ অনুরোধ

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

401 অননুমোদিত

অনুরোধটির ব্যবহারকারীর প্রমাণীকরণ প্রয়োজন। প্রতিক্রিয়াটির মধ্যে একটি WWW- প্রমাণীকরণের শিরোনাম ক্ষেত্র অন্তর্ভুক্ত থাকতে হবে

404 পাওয়া যায়নি

অনুরোধ-ইউআরআইয়ের সাথে মিলে সার্ভারটি কিছু খুঁজে পায়নি। শর্তটি অস্থায়ী বা স্থায়ী কিনা সে সম্পর্কে কোনও ইঙ্গিত দেওয়া হয়নি


ডাব্লু 3 পোস্টটি এইচটিটিপি স্থিতি কোড সম্পর্কে। এইচটিটিপি আরএসটির মতো নয় ical REST বেশিরভাগ ক্ষেত্রে তবে প্রয়োজনীয় নয় যে HTTP কে পরিবহন প্রোটোকল হিসাবে ব্যবহার করে। 404 একটি HTTP পরিবহন ত্রুটি কোড। আরআরইএসটি যদি এইচটিটিপি'র মতো হয় তবে এটিকে কি এইচটিটিপি বলা উচিত নয়?
anneb

1
@ অ্যানেব যেমন আপনি বলেছিলেন যে বিশ্রামটি এইচটিটিপি ব্যবহার করে তাই এই উত্তরটি পুরোপুরি অর্থপূর্ণ হয়। REST হ'ল HTTP নয়, তবে REST কোনওভাবেই প্রোটোকল নয়। এই উত্তরটি বোঝাতে না পারার জন্য REST- তে অভিন্ন (বা HTTP এর মতো) হওয়ার দরকার নেই।
Koray Tugay

@ কোরে তুগেই: গুগল অনুসন্ধানেও এইচটিপি ব্যবহার করা হয়েছে, সুতরাং এই উত্তর অনুসারে গুগল অনুসন্ধানের কি কোনও উত্তর অনুসন্ধানের সাথে মেলে না?
anneb

@ অ্যানেব গুগল অনুসন্ধানে আপনি কোনও বিশ্রামের অ্যাপ্লিকেশন উল্লেখ করেছেন? আমার মনে হয় না .. সুতরাং উত্তরটি হবে না। আসল প্রশ্নে ফিরে আসা এবং এই খরগোশের গর্তে পড়ার পরিবর্তে এই উত্তরে .. যদি গুগল অনুসন্ধান একদিন একটি রেস্টস্টুল এপিআই তৈরি করে (বা এটি ইতিমধ্যে রয়েছে, আমি জানি না) এটি 204 No Contentকোনও ফলাফল না পেলে ফিরে আসতে পারে । না 404, এটির ফলস্বরূপ আপনার ফলাফল রয়েছে তবে এতে কোনও সামগ্রী নেই ..
Koray Tugay

13

সংক্ষিপ্তকরণ বা সরলীকরণ করতে,

2 এক্সএক্স: alচ্ছিক ডেটা: সুগঠিত ইউআরআই: মানদণ্ড ইউআরআইয়ের অংশ নয়: মানদণ্ডটি যদি Rচ্ছিক হয় তবে @RequestBody এবং @RequestParam 2XX এ যেতে হবে should উদাহরণ: নাম / স্থিতি অনুসারে ফিল্টার করুন

4xx: প্রত্যাশিত ডেটা: সুগঠিত ইউআরআই নয়: মানদণ্ডটি ইউআরআইয়ের অংশ: যদি মানদণ্ড বাধ্যতামূলক হয় যা কেবলমাত্র @PathVariable এ সুনির্দিষ্ট করা যেতে পারে তবে এটি 4 xxx হতে পারে। উদাহরণ: অনন্য আইডি দ্বারা অনুসন্ধান।

এইভাবে জিজ্ঞাসিত পরিস্থিতির জন্য: "ব্যবহারকারী / 9" 4XX (সম্ভবত 404) হবে তবে "ব্যবহারকারী? নাম = সুপারম্যান" এর জন্য 2XX হওয়া উচিত (সম্ভবত 204)


12

দুটি প্রশ্ন জিজ্ঞাসা করা হয়। শিরোনামে একটি এবং উদাহরণে একটি। আমি মনে করি এটি আংশিকভাবে যে পরিমাণ প্রতিক্রিয়া উপযুক্ত তা নিয়ে বিতর্ক সৃষ্টি করেছে।

প্রশ্নের শিরোনাম খালি ডেটা সম্পর্কে জিজ্ঞাসা করে। খালি ডেটা এখনও ডেটা তবে কোনও ডেটা হিসাবে একই নয়। সুতরাং এটি সম্ভবত কোনও ফলাফলের জন্য একটি সেট, অর্থাৎ একটি তালিকার অনুরোধ করবে/users । যদি একটি তালিকা খালি থাকে তবে এটি এখনও একটি তালিকা তাই 204 (কোনও সামগ্রী নেই) সবচেয়ে উপযুক্ত। আপনি সবেমাত্র ব্যবহারকারীর একটি তালিকা চেয়েছিলেন এবং একটি সরবরাহ করা হয়েছে, এটিতে কোনও বিষয়বস্তু না থাকার ঘটনা ঘটে।

পরিবর্তে প্রদত্ত উদাহরণটি কোনও নির্দিষ্ট অবজেক্ট, একজন ব্যবহারকারী, সম্পর্কে জিজ্ঞাসা করে /users/9। যদি ব্যবহারকারী # 9 পাওয়া না যায় তবে কোনও ব্যবহারকারীর অবজেক্ট ফেরত দেওয়া হবে না। আপনি একটি নির্দিষ্ট সংস্থান (একটি ব্যবহারকারী অবজেক্ট) চেয়েছিলেন এবং এটি দেওয়া হয়নি কারণ এটি পাওয়া যায় নি, সুতরাং একটি 404 উপযুক্ত is

আমি মনে করি এটি কার্যকর করার উপায়টি হ'ল যদি আপনি কোনও শর্তাধীন বিবৃতি না যোগ করে আপনি যেভাবে প্রতিক্রিয়াটি আশা করেন সেভাবে ব্যবহার করতে পারেন, তবে একটি 204 ব্যবহার করুন অন্যথায় 404 ব্যবহার করুন use

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

আপনি অবশ্যই নাল অবজেক্ট প্যাটার্ন ব্যবহার করে কোনও বস্তুটি ফেরত দিতে পারেন যদি এটি আপনার প্রয়োজন অনুসারে হয় তবে এটি অন্য থ্রেডের জন্য আলোচনা।


9

প্রশ্ন দেখার পরে, আপনি 404কেন ব্যবহার করবেন না?

আরএফসি 7231 এর ভিত্তিতে সঠিক স্থিতি কোডটি is204

উপরের এনওজারগুলিতে আমি 1 টি ছোট ভুল বোঝাবুঝি লক্ষ্য করেছি:

1.- সংস্থানটি হ'ল: /users

২-- /users/8সংস্থান নয়, এটি হ'ল /usersরুট প্যারামিটার সহ সংস্থান8 , গ্রাহক সম্ভবত এটি লক্ষ্য করতে পারে না এবং পার্থক্যটিও জানে না, তবে প্রকাশক এটি জানেন এবং এটি অবশ্যই জানেন! ... সুতরাং তাকে অবশ্যই গ্রাহকদের জন্য একটি সঠিক প্রতিক্রিয়া ফিরিয়ে দিতে হবে। সময়কাল।

তাই:

আরএফসির উপর ভিত্তি করে: 404 টি ভুল কারণ সংস্থানগুলি /usersপাওয়া গেছে, তবে প্যারামিটারটি ব্যবহার করে চালিত যুক্তিটি 8কোনও contentপ্রতিক্রিয়া হিসাবে ফিরে আসেনি , সুতরাং সঠিক উত্তরটি হ'ল:204

এখানে মূল বক্তব্যটি: 404অভ্যন্তরীণ যুক্তি প্রক্রিয়া করার জন্যও সংস্থানটি পাওয়া যায় নি

204এটি একটি: আমি সংস্থানটি পেয়েছি, যুক্তিটি কার্যকর করা হয়েছিল তবে আমি রুট প্যারামিটারে দেওয়া আপনার মানদণ্ড ব্যবহার করে কোনও ডেটা খুঁজে পাইনি যাতে আমি আপনাকে কিছু ফিরিয়ে দিতে পারি না। দুঃখিত, আপনার মানদণ্ড যাচাই করুন এবং আমাকে আবার কল করুন।

200: ঠিক আছে, আমি রিসোর্সটি পেয়েছি, যুক্তিটি কার্যকর করা হয়েছিল (এমনকি যখন আমি কোনও কিছু ফেরত দিতে বাধ্য হয় না) এটি গ্রহণ করুন এবং আপনার ইচ্ছায় এটি ব্যবহার করুন।

205: (জিইটির প্রতিক্রিয়াটির সর্বোত্তম বিকল্প) আমি সংস্থানটি পেয়েছি, যুক্তিটি কার্যকর করা হয়েছিল, আপনার জন্য আমার কাছে কিছু সামগ্রী রয়েছে, এটি ভালভাবে ব্যবহার করুন, ওহ, আপনি যদি কোনও দৃশ্যে এটি ভাগ করেই চলেছেন তবে দয়া করে ভিউটি রিফ্রেশ করুন এটি প্রদর্শন করুন।

আশা করি এটা সাহায্য করবে.


8

বিদ্যমান উত্তরগুলি কী ব্যাখ্যা করে না তা হ'ল আপনি পথের পরামিতি ব্যবহার করেন বা ক্যোয়ারী প্যারামিটারগুলি ব্যবহার করে তা একটি পার্থক্য করে।

  • পথের পরামিতিগুলির ক্ষেত্রে, পরামিতিগুলি সংস্থান পথের অংশ। ক্ষেত্রে /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 ব্যবহার পছন্দ করি। এখানে কেন:

  • অকার্যকর (1 ফলাফল) এবং এন-অ্যারি (এন ফলাফল) পদ্ধতির জন্য কলগুলি কোনও ভাল কারণের জন্য পৃথক হওয়া উচিত নয়। আমি যদি সম্ভব হয় তবে একই প্রতিক্রিয়া কোডগুলি পেতে চাই। প্রত্যাশিত ফলাফলের সংখ্যা অবশ্যই একটি পার্থক্য, বলুন, আপনি প্রত্যাশা করছেন যে শরীরটি কোনও অবজেক্ট (অ্যানারি) বা বস্তুর অ্যারে (এন-অ্যারি) হবে be
  • এনআরির জন্য, আমি একটি অ্যারে ফিরিয়ে দেব, এবং ফলাফল না থাকলে আমি কোনও সেট (কোনও দলিল নেই) ফেরত দেব না, আমি একটি খালি সেট (খালি ডকুমেন্ট, জেএসএনের ফাঁকা অ্যারের মতো বা এক্সএমএল খালি উপাদান) ফিরিয়ে দেব )। এটি এখনও 200 তবে শূন্য রেকর্ড সহ। এই তথ্যটি দেহ ব্যতীত তারের উপর রাখার কোনও কারণ নেই।
  • 204একটি voidপদ্ধতির মত । আমি এটা ব্যবহার করেন না GET, শুধুমাত্র POST, PUTএবং DELETEGETশনাক্তকারীরা কোথার পরামিতি নয় , যেখানে পরামিতি রয়েছে সে ক্ষেত্রে আমি ব্যতিক্রম করি ।
  • না রেকর্ড খোঁজার মত হল NoSuchElementException, ArrayIndexOutOfBoundsExceptionযে ভালো কিছু, একটি আইডি বিদ্যমান নয়, তাই হয়, এটা একটি ক্লায়েন্ট ত্রুটি ব্যবহার ক্লায়েন্ট দ্বারা সৃষ্ট বা।
  • একটি কোড দৃষ্টিকোণ থেকে, প্রাপ্তি 204মানে কোডের একটি অতিরিক্ত শাখা যা এড়ানো যায়। এটি ক্লায়েন্ট কোডটিকে জটিল করে তোলে এবং কিছু ক্ষেত্রে এটি সার্ভার কোডকেও জটিল করে তোলে (আপনি সত্তা / মডেল ম্যানড বা সরল সত্তা / মডেলগুলি ব্যবহার করেন কিনা তার উপর নির্ভর করে; এবং আমি দৃ I ়ভাবে সত্তা / মডেল মনড থেকে দূরে থাকার জন্য ়ভাবে প্রস্তাব , এটি বাজে বাগগুলিতে নিয়ে যেতে পারে যেখানে কারণ আপনি যে মোনাডকে ভাবেন যে কোনও অপারেশন সফল হয়েছে এবং 200 বা 204 ফিরিয়ে দিন যখন আপনার আসলে অন্য কিছু পাওয়া উচিত ছিল)।
  • ক্লায়েন্ট কোডটি লিখতে এবং বুঝতে সহজ হয় যদি 2XX এর অর্থ সার্ভার ক্লায়েন্টের অনুরোধ অনুসারে কাজ করে, এবং 4XX এর অর্থ সার্ভার ক্লায়েন্টের অনুরোধ অনুযায়ী করেনি এবং এটি ক্লায়েন্টের দোষ। ক্লায়েন্টকে আইডি দ্বারা অনুরোধ করা ক্লায়েন্টকে রেকর্ড না দেওয়া ক্লায়েন্টের দোষ, কারণ ক্লায়েন্ট কোনও আইডি অনুরোধ করেন যা বিদ্যমান নেই।

সর্বশেষ তবে সর্বনিম্ন নয়: ধারাবাহিকতা

  • 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পরিবর্তে ক্লায়েন্ট যদি ব্যবহার করে তবে কীটগুলি সম্পূর্ণ আলাদা ক্যান খোলে।


5

"কোনও ডেটা পাওয়া যায় নি" এর মতো কাস্টম ত্রুটি বার্তায় টুইটার 404 ব্যবহার করে।

রেফ: https://developer.twitter.com/en/docs/basics/response-codes.html


2
মাইক্রোসফ্ট অ্যাজুরে 404 ব্যবহার করে, তবে হেড অনুরোধগুলির প্রতিক্রিয়া জানালে কাস্টম ত্রুটি বার্তাটি সম্ভব হয় না। ডকস.মাইক্রোসফট.ওন
মাইক

3

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


আপনার যদি ব্যাকএন্ড ত্রুটি থাকে তবে আপনার 404 ফেরানো উচিত নয়।
appalling22

3

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

1

আমি যুক্তি দিয়ে বলছি যে, HTTP সার্ভার যদি এমন কোনও পরিষেবা খুঁজে পায় যা প্রেরণের অনুরোধটির জবাব দিতে প্রস্তুত থাকে তবে এটি কোনও HTTP 404 দিয়ে সাড়া দেওয়া উচিত নয় - শেষ পর্যন্ত সার্ভারের মাধ্যমে কিছু পাওয়া গিয়েছিল - যতক্ষণ না স্পষ্টভাবে বলা হয় অনুরোধটি প্রক্রিয়া করে এমন পরিষেবা।

এর একটি মুহূর্ত জন্য অনুমান নিম্নলিখিত URL- করা যাক: http://example.com/service/return/test

  • কেস এ হ'ল সার্ভারটি "কেবল ফাইল সিস্টেমে ফাইল সন্ধান করছে"। যদি এটি উপস্থিত না থাকে 404তবে সঠিক। একই কথা সত্য, যদি এটি এই ধরণের ফাইলটি সরবরাহ করতে কোনও ধরণের পরিষেবা জিজ্ঞাসা করে এবং সেই পরিষেবাটি জানায় যে সেই নামের কিছুই বিদ্যমান নেই।
  • বি ক্ষেত্রে, সার্ভারটি "আসল" ফাইলগুলির সাথে কাজ করে না তবে প্রকৃতপক্ষে অনুরোধটি অন্য কোনও পরিষেবা দ্বারা প্রক্রিয়া করা হয় - যেমন কোনও ধরণের টেম্প্লেটিং সিস্টেম। এখানে, সার্ভারটি উত্সটির অস্তিত্ব সম্পর্কে কোনও দাবি করতে পারে না কারণ এটি এ সম্পর্কে কিছুই জানে না (যদি না পরিষেবাটি এটি পরিচালনা করে না বলা হয়)।

পরিষেবা থেকে কোনও প্রতিক্রিয়া ছাড়াই স্পষ্টভাবে আলাদা আচরণের প্রয়োজন হয়, এইচটিটিপি সার্ভার কেবল তিনটি জিনিস বলতে পারে:

  • 503 অনুরোধটি পরিচালনা করার কথা বলে যদি পরিষেবাটি চলছে না বা সাড়া দিচ্ছে;
  • 200 অন্যথায় এইচটিটিপি সার্ভারটি আসলে অনুরোধটি পূরণ করতে পারে - পরে পরিষেবাটি কী বলবে তা বিবেচনাধীন নয়;
  • 400বা 404এমন কোনও পরিষেবা নেই বলে বোঝানোর জন্য ("বিদ্যমান তবে অফলাইনে থাকা" এর বিপরীতে) এবং অন্য কোনও কিছুই পাওয়া যায় নি।

2

প্রশ্নটিতে ফিরে আসার জন্য: আমি মনে করি যে সবচেয়ে পরিষ্কার পদ্ধতিটি এইচটিটিপি আগে কোনও মন্তব্য ছাড়া কোনও প্রতিক্রিয়া কোড ব্যবহার না করা। যদি পরিষেবাটি উপস্থিত থাকে এবং প্রতিক্রিয়া জানায়, HTTP কোডটি 200 হওয়া উচিত The প্রতিক্রিয়ায় পরিষেবাটি পৃথক শিরোনামে ফিরে আসা স্থিতি থাকা উচিত - এখানে, পরিষেবা বলতে পারে

  • REST:EMPTYউদাহরণস্বরূপ যদি এটি স্টাচ অনুসন্ধান করতে বলা হয়েছিল। এবং এই গবেষণা খালি ফিরে;
  • REST:NOT FOUNDযদি এটি বিশেষভাবে স্টাফের জন্য জিজ্ঞাসা করা হত। "আইডি-এর মতো" - আইডি বা এন্ট্রি নং 24, ইত্যাদি দ্বারা কোনও ফাইলের নাম বা কোনও সংস্থান হতে পারে - এবং সেই নির্দিষ্ট সংস্থানটি পাওয়া যায় নি (সাধারণত, একটি নির্দিষ্ট সংস্থান অনুরোধ করা হয়েছিল এবং পাওয়া যায় নি);
  • REST:INVALID অনুরোধের যে কোনও অংশ এটি প্রেরণ করা হয়েছিল তা পরিষেবা দ্বারা স্বীকৃত নয়।

(মনে রাখবেন যে এইচটিটিপি প্রতিক্রিয়া কোডগুলির মতো একই মান বা শব্দগুচ্ছ থাকতে পারে, সেগুলি চিহ্নিত করার উদ্দেশ্যে উদ্দেশ্য হিসাবে আমি এগুলিকে "আরএসটি:" দিয়ে উপসর্গ করেছিলাম) তবে তারা সম্পূর্ণ পৃথক)

3

আসুন উপরের ইউআরএল ফিরে ফিরে আসুন এবং কেস বি পরিদর্শন করুন যেখানে পরিষেবাটি এইচটিটিপি সার্ভারকে নির্দেশ করে যে এটি নিজেই এই অনুরোধটি পরিচালনা করে না তবে এতে প্রবেশ করে 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যদি পরে এটির জন্য পরিকল্পনা করা হয় তবে ফিরে আসুন ।

4

এই ভিন্নতা দুটি ভিন্ন জিনিস মিশ্রণের চেয়ে অনেক পরিষ্কার er এটি ডিবাগিংকে আরও সহজ এবং প্রসেসিংকে আরও কিছুটা জটিল করে তুলবে, যদি তা না হয় তবে।

  • যদি কোনও HTTP 404 ফিরে আসে, সার্ভারটি আমাকে বলে, "আপনি কী বলছেন তা আমার কোনও ধারণা নেই"। যদিও আমার অনুরোধের বিশ্রাম অংশটি সঠিকভাবে ঠিক আছে, আমি সমস্ত ভুল জায়গায় পার'ম্যাচ খুঁজছি।
  • অন্যদিকে, HTTP 200 এবং REST: ERR আমাকে বলেছে যে আমি পরিষেবাটি পেয়েছি তবে পরিষেবাটিতে আমার অনুরোধে কিছু ভুল করেছি।
  • HTTP 200 এবং REST থেকে: EMPTY, আমি জানি যে আমি কোনও ভুল করি নি - ডান সার্ভার, সার্ভারটি পরিষেবাটি, পরিষেবাটিতে সঠিক অনুরোধ খুঁজে পেয়েছিল - তবে অনুসন্ধানের ফলাফলটি খালি is

সারসংক্ষেপ

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

কোনও পরিষেবা দ্বারা প্রক্রিয়াকৃত একটি অনুরোধের অবস্থা এবং এইচটিটিপি সার্ভারটি আসলেই করা উচিত নয় (আরএফসি 6919) কোনও HTTP প্রতিক্রিয়া কোড দিয়ে দেওয়া উচিত। এইচটিটিপি কোড SHOULD (আরএফসি 2119) কেবল এইচটিটিপি সার্ভারের নিজস্ব সুযোগ থেকে দিতে পারে এমন তথ্য ধারণ করে: যথা, অনুরোধটি প্রক্রিয়া করার জন্য পরিষেবাটি পাওয়া গেছে কিনা।

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


2

আরএফসি 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 স্থিতি কোডটি খালি ফলাফল সহ সফল জিইটি অনুরোধে ব্যবহার করা উচিত নয় (উদাহরণস্বরূপ: নির্দিষ্ট ফিল্টারটির জন্য কোনও ফলাফল ছাড়াই একটি তালিকা)


2

এই জাতীয় বিষয়গুলি বিষয়গত হতে পারে এবং উভয় পক্ষেই কিছু আকর্ষণীয় এবং বিভিন্ন শক্ত যুক্তি রয়েছে। তবে [আমার মতে] নিখোঁজ ডেটার জন্য 404 ফিরিয়ে দেওয়া সঠিক নয় । এটি পরিষ্কার করার জন্য এখানে একটি সরলীকৃত বিবরণ দেওয়া হয়েছে:

  • অনুরোধ: দয়া করে আমার কিছু ডেটা পাওয়া যাবে?
  • সংস্থান (এপিআই শেষ পয়েন্ট): আমি আপনার জন্য সেই অনুরোধটি পেয়ে যাব, এখানে [সম্ভাব্য ডেটার প্রতিক্রিয়া পাঠায়]

কিছুই ভেঙে যায় নি, শেষ পয়েন্টটি খুঁজে পাওয়া গেল, এবং টেবিল এবং কলামগুলি পাওয়া গেল যাতে ডিবি জিজ্ঞাসাবাদ করেছিল এবং ডেটা "সাফল্যের সাথে" ফিরে এসেছে!

এখন - সেই "সফল প্রতিক্রিয়া" -এর ডেটা রয়েছে বা না তা বিবেচনা না করে আপনি "সম্ভাব্য" ডেটার প্রতিক্রিয়া চেয়েছিলেন এবং "সম্ভাব্য" ডেটা সহ সেই প্রতিক্রিয়া পূর্ণ হয়েছিল। নাল, খালি ইত্যাদি বৈধ ডেটা।

200 এর অর্থ হ'ল আমরা যা কিছু অনুরোধ করেছিলাম তা সফল হয়েছিল। আমি ডেটা অনুরোধ করছি, এইচটিটিপি / আরইএসটি-তে কোনও ভুল হয়নি, এবং ডেটা (খালি হলেও) ফেরত পেলে আমার "ডেটার জন্য অনুরোধ" সফল হয়েছিল।

একটি 200 ফিরিয়ে দিন এবং প্রতিটি নির্দিষ্ট দৃশ্যের এটির ওয়্যারেন্ট হিসাবে অনুরোধকারী খালি ডেটা নিয়ে কাজ করে!

এই উদাহরণ বিবেচনা করুন:

  • অনুরোধ: ব্যবহারকারীর আইডি 1234 সহ "লঙ্ঘনের" সারণী অনুসন্ধান করুন
  • সংস্থান (এপিআই শেষ পয়েন্ট): একটি প্রতিক্রিয়া ফেরত দেয় তবে ডেটা খালি থাকে

এই ডেটা খালি থাকা সম্পূর্ণ বৈধ। এর অর্থ হ'ল ব্যবহারকারীর কোনও লঙ্ঘন নেই। এটি 200 হিসাবে এটি সমস্ত বৈধ, ততক্ষণে আমি এটি করতে পারি:

আপনার কোনও লঙ্ঘন নেই, একটি ব্লুবেরি মাফিন রয়েছে!

যদি আপনি এটিকে 404 বলে মনে করেন তবে আপনি কী বলছেন? ব্যবহারকারীর লঙ্ঘন খুঁজে পাওয়া গেল না? এখন, ব্যাকরণগতভাবে এটি সঠিক, তবে REST বিশ্বে এটি ঠিক সঠিক নয় যে অনুরোধটি সম্পর্কে সাফল্য বা ব্যর্থতা ছিল। এই ব্যবহারকারীর জন্য "ইনফ্রাকশন" ডেটা সাফল্যের সাথে পাওয়া যেতে পারে, শূন্য লঙ্ঘন রয়েছে - একটি বৈধ রাষ্ট্রের প্রতিনিধিত্বকারী একটি আসল সংখ্যা।


[চটকদার নোট ..]

আপনার শিরোনামে, আপনি অবচেতনভাবে সম্মতি দিচ্ছেন যে 200 সঠিক প্রতিক্রিয়া:

একটি বৈধ অনুরোধের জন্য যথাযথ REST প্রতিক্রিয়া কোডটি কী তবে খালি ডেটা?


সাবজেক্টিভিটি এবং কৌতুকপূর্ণ পছন্দ নির্বিশেষে কোন স্থিতি কোডটি ব্যবহার করবেন তা চয়ন করার জন্য এখানে কয়েকটি বিষয় বিবেচনা করতে হবে:

  1. ধারাবাহিকতা । যদি আপনি "কোনও তথ্য নেই" এর জন্য 404 ব্যবহার করেন তবে প্রতিবার কোনও প্রতিক্রিয়া কোনও ডেটা ফিরিয়ে দিচ্ছে না it
  2. একাধিক অর্থের জন্য একই অবস্থা ব্যবহার করবেন না । যদি আপনি 404 ফেরত যান যখন কোনও উত্স পাওয়া যায় না (যেমন এপিআই শেষের পয়েন্ট থাকে না ইত্যাদি) তবে কোনও ডেটা ফেরত না পেয়ে এটি ব্যবহার করবেন না । এটি কেবল প্রতিক্রিয়াগুলির সাথে ব্যথা করে।
  3. প্রসঙ্গে সাবধানে বিবেচনা করুন । "অনুরোধ" কি? আপনি কী বলছেন যে আপনি অর্জন করার চেষ্টা করছেন?

1

প্রতিক্রিয়া সামগ্রীটিকে একটি সাধারণ এনাম দিয়ে এনকোড করুন যা ক্লায়েন্টকে এটি স্যুইচ করতে এবং সেই অনুসারে যুক্তিযুক্ত কাঁটাচামচ করতে দেয়। আমি নিশ্চিত নই যে আপনার ক্লায়েন্ট কীভাবে একটি "ডেটা পাওয়া যায়নি" 404 এবং একটি "ওয়েব সংস্থান খুঁজে পাওয়া যায় না" 404 এর মধ্যে পার্থক্যটি পার্থক্য করবে? আপনি চাইছেন না যে কেউ জেড / 9 ব্যবহারকারীর কাছে ব্রাউজ করুন এবং ক্লায়েন্টকে অবাক করে দিয়ে অনুরোধটি বৈধ ছিল তবে কোনও ডেটা ফেরেনি।


1

410 ব্যবহার করবেন না কেন? এটি প্রস্তাবিত সংস্থানটি আর বিদ্যমান নেই এবং ক্লায়েন্টটি আপনার ক্ষেত্রে সেই সংস্থানটির জন্য কোনও অনুরোধ করবেন না বলে আশা করা যায় users/9

410 সম্পর্কে আপনি এখানে আরও বিস্তারিত জানতে পারেন: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html


2
'ক্লায়েন্টটি কখনই কোনও অনুরোধ করবেন না' - এবং যদি সেই ব্যবহারকারী পরে তৈরি হয় তবে আপনার উত্তর থেকে আপনি নিশ্চয়তা দিতে পারেন যে এই ব্যবহারকারীর অস্তিত্ব কখনও নেই, এটি খুব সাহসী অনুমান এবং সম্ভবত ভুল
হোলি

হোলি কি বলেছে। তার বক্তব্যটি যোগ করার জন্য: এমনকি ব্যবহারকারী উপস্থিত থাকলে এবং মুছে ফেলা হলেও 410 ভুল, কারণ যদি ব্যবহারকারীকে মুছে ফেলা হয়? (কোন ধরণের পরে তৈরি হওয়ার একটি বিশেষ কেস))
ক্রিশ্চিয়ান হুজার

কারণ 410 স্থায়ী পরিস্থিতি হওয়া উচিত। restapitutorial.com/httpstatuscodes.html
আকোঠা

1

দুঃখের বিষয় যে এত সহজ এবং সুস্পষ্টভাবে কিছু সংজ্ঞায়িত হয়ে এই থ্রেডে "মতামত ভিত্তিক" হয়েছে।

একটি এইচটিটিপি সার্ভার কেবল "সত্তা" সম্পর্কে জানে, যা কোনও সামগ্রীর বিমূর্ততা, এটি একটি স্ট্যাটিক ওয়েব পৃষ্ঠা, অনুসন্ধান ফলাফলের তালিকা, অন্যান্য সত্তার একটি তালিকা, কোনও জিনিসের জসন বিবরণ, একটি মিডিয়া ফাইল ইত্যাদি etc

এই জাতীয় প্রতিটি সত্তা অনন্য ইউআরএল দ্বারা সনাক্তকরণযোগ্য হিসাবে প্রত্যাশিত

  • / ব্যবহারকারী / 9 - একটি একক সত্তা: একটি ব্যবহারকারী আইডি = 9
  • / ব্যবহারকারী - একটি একক সত্তা: সমস্ত ব্যবহারকারীর একটি তালিকা
  • /media/x.mp3 - একটি একক সত্তা: x.mp3 নামে একটি মিডিয়া ফাইল
  • / অনুসন্ধান - একটি একক সত্তা: কোয়েরি প্যারামগুলির উপর ভিত্তি করে একটি গতিশীল CONTENT

কোনও সার্ভার যদি প্রদত্ত ইউআরএল দ্বারা কোনও সংস্থান খুঁজে পায় তবে তা কী তা বিবেচনা করে না বিষয়বস্তুগুলি - 2 জি ডেটা, নাল, {}, [] - যতক্ষণ না এটি বিদ্যমান থাকবে, 200 হবে But তবে যদি এই সত্তাটি হয় সার্ভারটির কাছে জানা নেই, 404 "পাওয়া যায়নি" ফিরিয়ে দেওয়া অনুমিত।

একটি বিভ্রান্তি বিকাশকারীদের কাছ থেকে মনে হয় যারা মনে করেন যদি অ্যাপ্লিকেশনটির নির্দিষ্ট পথের আকারের জন্য কোনও হ্যান্ডলার রয়েছে, তবে এটি ত্রুটি হওয়া উচিত নয়। এইচটিটিপি প্রোটোকলের দৃষ্টিতে সার্ভারের অভ্যন্তরীণ অঞ্চলে কী ঘটেছিল তা বিচার্য নয় (যেমন ডিফল্ট রাউটার প্রতিক্রিয়া দেখিয়েছে বা নির্দিষ্ট পথের আকারের জন্য কোনও হ্যান্ডলার কিনা) যতক্ষণ না সার্ভারে কোনও সাদৃশ্য সত্তা নেই the অনুরোধ করা ইউআরএল (যা এমপি 3 ফাইল, ওয়েবপেজ, ব্যবহারকারী বস্তুর অনুরোধ করেছে), যা বৈধ সামগ্রী (খালি বা অন্যথায়) ফিরিয়ে দেবে, এটি অবশ্যই 404 (বা 410 ইত্যাদি) হওয়া উচিত।

বিভ্রান্তির আরেকটি বিষয় "ডেটা নেই" এবং "কোনও সত্তা নয়" বলে মনে হচ্ছে। পূর্ববর্তীটি কোনও সত্তার বিষয়বস্তু এবং তার অস্তিত্ব সম্পর্কে পরে থাকে।

উদাহরণ 1:

  • কোনও ডেটা নেই: / ব্যবহারকারীরা 200 ওকে ফেরত দেবে, দেহ: [] কারণ কেউ এখনও নিবন্ধিত হয়নি
  • কোনও সত্তা নেই: / ব্যবহারকারীরা 404 ফেরত দেয় কারণ কোনও পথ / ব্যবহারকারী নেই

উদাহরণ 2:

  • কোনও তথ্য নেই: / ব্যবহারকারী / 9 রিটার্ন 200 ঠিক আছে, দেহ: {return, কারণ ব্যবহারকারী আইডি = 9 তার / তার ব্যক্তিগত তথ্য প্রবেশ করেনি
  • কোনও সত্তা: / ব্যবহারকারী / 9 404 ফেরত দেয় কারণ কোনও ব্যবহারকারী আইডি = 9 নেই

উদাহরণ 3:

  • কোনও ডেটা: / অনুসন্ধান? নাম = জো 200 টি ঠিক আছে [] ফিরিয়ে দেয়, কারণ ডিবিতে জো নেই are
  • কোনও সত্তা নেই: / সন্ধান? নাম = জো 404 ফেরায় কারণ কোনও পথ / অনুসন্ধান নেই

0

404 কোনও ক্লায়েন্টের জন্য খুব বিভ্রান্তিকর হবে যদি আপনি কেবল প্রতিক্রিয়াতে কোনও ডেটা না থাকায় ফিরে আসেন।

আমার জন্য, খালি শরীরের সাথে রেসপন্স কোড 200 যথেষ্ট বুঝতে যথেষ্ট যে সবকিছু নিখুঁত তবে প্রয়োজনীয়তার সাথে মিলে এমন কোনও ডেটা নেই।


0

মাইক্রোসফ্টের মতে: এএসপি.নেট কোর ওয়েব এপিআই-তে কন্ট্রোলার অ্যাকশন রিটার্নের ধরণগুলি , প্রায় নীচে নীচে স্ক্রোল করুন, আপনি ডাটাবেসে পাওয়া যায় নি এমন কোনও বস্তুর সাথে সম্পর্কিত 404 সম্পর্কে নীচের ব্লার্ব পেয়েছেন। এখানে তারা প্রস্তাব দেয় যে একটি 404 খালি ডেটার জন্য উপযুক্ত।

এখানে চিত্র বর্ণনা লিখুন


0

যেমন অনেকের দ্বারা বলা হয়েছে, 404 বিভ্রান্তিমূলক এবং অনুরোধ ইউরি উপস্থিত না থাকলে বা অনুরোধকৃত ইউরি অনুরোধ করা সংস্থানটি পেতে না পারলে এটি ক্লায়েন্টকে বৈষম্য করতে দেয় না।

200 টি স্থিতিতে রিসোর্স ডেটা থাকবে বলে আশা করা যায় - তাই এটি সঠিক পছন্দ নয়। 204 স্থিতির অর্থ পুরোপুরি অন্য কিছু এবং জিইটি অনুরোধের প্রতিক্রিয়া হিসাবে ব্যবহার করা উচিত নয়।

অন্য সমস্ত বিদ্যমান স্থিতি প্রযোজ্য নয়, এক কারণে বা অন্য কারণে।

আমি একাধিক জায়গায় এই বিষয়টি বার বার আলোচিত হতে দেখেছি। আমার জন্য, এটি বেদনাদায়কভাবে স্পষ্ট যে বিষয়টির চারপাশে বিভ্রান্তি দূর করতে, একটি উত্সর্গীকৃত সাফল্যের স্থিতি প্রয়োজন। " 209 - প্রদর্শনের কোনও সংস্থান নেই " এর মতো কিছু ।

এটি 2XX স্থিতি হবে কারণ একটি আইডি না পাওয়া একটি ক্লায়েন্ট ত্রুটি হিসাবে বিবেচনা করা উচিত নয় (যদি ক্লায়েন্টগুলি সার্ভারের ডিবিতে থাকা সমস্ত কিছু জানত তবে তাদের সার্ভারের কাছে কিছু জিজ্ঞাসা করার দরকার পড়েনি, তাই না?)। এই উত্সর্গীকৃত স্থিতি অন্যান্য স্ট্যাটাসগুলি ব্যবহার করে বিতর্কিত সমস্ত সমস্যার সমাধান করবে।

একমাত্র প্রশ্ন: আমি কীভাবে আরএফসিটিকে একটি মান হিসাবে গ্রহণ করব?

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