REST এপিআই ত্রুটি ভাল অনুশীলনগুলি [বন্ধ] ফিরে আসে


622

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

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

তাহলে শিল্পের সুপারিশগুলি কী? ভাল অনুশীলন (দয়া করে ব্যাখ্যা করুন!) এবং ক্লায়েন্ট pov থেকেও, REST এপিআইতে কোন ধরণের ত্রুটি পরিচালনা ক্লায়েন্ট কোডের জন্য জীবনকে সহজ করে তোলে?


7
কেবল স্পষ্ট করে বলার জন্য: কোন বিশেষ এইচটিটিপি স্থিতি কোডটি ফিরে আসবে সে বিষয়ে আমি তেমন আগ্রহী নই, তবে এইচটিটিপি স্থিতি কোডগুলির সাথে পে-লোড ত্রুটিগুলি একত্রিত করার জন্য একটি ভাল আরআরএসটি অনুশীলন কিনা বা কেবলমাত্র পেলোডের উপর নির্ভর করা ভাল।
রেমাস রুসানু

3
REST এপিআই ডিজাইন হ্যান্ডবুকটি এই বিষয়টিকে বেশ ভালভাবে কভার করে।
রিমাস রুসানু

12
প্রশ্ন মতামত জিজ্ঞাসা করে না, তবে গাইডেন্স / পরামর্শের জন্য এবং পুনরায় খোলা উচিত এবং রেফারেন্স হিসাবে ব্যবহার করা উচিত। ২০০৯ সালে তৈরি হওয়া প্রশ্নটি কীভাবে বন্ধ হবে তা ২০০৯ সালে তৈরি হয়েছিল, এতে
৪০০++

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

উত্তর:


220

সুতরাং প্রথমে 200 টি ঠিক আছে এবং একটি নির্দিষ্ট এক্সএমএল পেওলোড দিয়ে আমার অ্যাপ্লিকেশন ত্রুটিটি ফিরিয়ে দেওয়ার প্রলোভন পেয়েছিলাম (উদাঃ আমাদের আরও অর্থ প্রদান করুন এবং আপনার প্রয়োজনীয় স্টোরেজটি পাবেন!) তবে আমি এটি সম্পর্কে ভাবতে থামি এবং এটি সাবান মনে হয় (/ ভয়াবহতা কমানো)।

অনুরোধটিতে সত্যই কোনও ভুল না হলে আমি 200 ফিরিয়ে আনব না। আরএফসি 2626 থেকে 200 এর অর্থ "অনুরোধটি সফল হয়েছে।"

যদি ক্লায়েন্টের স্টোরেজ কোটা অতিক্রম করে (যাই হোক না কেন), আমি একটি 403 (নিষিদ্ধ) ফিরিয়ে দেব:

সার্ভারটি অনুরোধটি বুঝতে পেরেছিল তবে তা পূরণ করতে অস্বীকার করছে। অনুমোদন সাহায্য করবে না এবং অনুরোধটির পুনরাবৃত্তি করা উচিত নয়। যদি অনুরোধের পদ্ধতিটি হেড না হয় এবং সার্ভারটি কেন অনুরোধটি পূরণ করা হয়নি তা জনসাধারণের কাছে প্রকাশ করতে চায় তবে এটি সত্তায় অস্বীকার করার কারণ বর্ণনা করতে হবে। সার্ভার যদি ক্লায়েন্টের কাছে এই তথ্যটি সরবরাহ করতে না চায় তবে স্থিতি কোড 404 (পাওয়া যায়নি) পরিবর্তে ব্যবহার করা যেতে পারে।

এটি ক্লায়েন্টকে অনুরোধ করে যে অনুরোধটি ঠিক ছিল, কিন্তু এটি ব্যর্থ হয়েছে (২০০ কিছু না করে)। এটি আপনাকে প্রতিক্রিয়া সংস্থায় সমস্যা (এবং এর সমাধান) ব্যাখ্যা করার সুযোগও দেয়।

অন্য কোন নির্দিষ্ট ত্রুটির শর্ত আপনার মনে আছে?


6
আমি কি আমার বিশদ বার্তাটি শরীরে অন্তর্ভুক্ত করব, যেমন। একটি এক্সএমএল কোড / স্ট্রিং জোড়া? ক্লায়েন্টরা কীভাবে এটির সাথে সর্বোত্তম আচরণ করে? উদাহরণস্বরূপ আমি জানি C # WebRequest ভিত্তিক ক্লায়েন্টরা 'বাজে অনুরোধ' বা 'নিষিদ্ধ' ছুঁড়ে ফেলবে এবং প্রতিক্রিয়াটির অংশ দেবে না।
রেমাস রুসানু

18
একটি 403 এর শরীরে ত্রুটির বিবরণ থাকা উচিত। কোনও ক্লায়েন্ট তথ্য ব্যবহার করতে প্রস্তুত কিনা তা অন্য গল্প। এই ফর্ম্যাটটিকে অন্য সমস্ত পে-লোডের (যেমন, এক্সএমএল, জেএসওএন) বিন্যাসের মতো হওয়ার জন্য সর্বাধিক জ্ঞান পাওয়া যায়।
ধনী আপোডাচ

1
... এবং যদি 403-এ বিশদটি ফেরত না পাওয়া যায় তবে তার পরিবর্তে একটি 404 "ব্যবহার করা যেতে পারে (যদিও আমার কাছে সর্বোত্তম বিকল্পের মতো মনে হয় না)।
ধনী আপোডাচ

6
404 বিকল্পটি সেই ইভেন্টের জন্য যাতে কোনও 403 অ্যাপ্লিকেশন সম্পর্কে বিশদ প্রকাশ করতে পারে যা আপনি অননুমোদিত ব্যবহারকারীদের সম্পর্কে জানতে চান না - যদি কোনও প্রশাসনিক-প্রশাসক কোনও প্রশাসক-কেবলমাত্র ইউআরএলকে হিট করে, আপনি সম্ভবত সেই ব্যবহারকারীকে চান না এটি অ্যাডমিনস ইত্যাদির জন্য একটি বৈধ ইউআরএল ইত্যাদি জানতে এই ক্ষেত্রে যদিও 403 সম্পূর্ণভাবে উপযুক্ত।
গ্রেগ ক্যাম্পবেল

16
আমি অনুভব করি এটি একটি বেশ অস্বাস্থ্যকর উত্তর। আমি ভাবতাম যে আরও গুরুত্বপূর্ণ দিকটি কেবলমাত্র স্ট্যাটাসগুলিই ব্যবহার করা উচিত কিনা, বা ত্রুটির তথ্যটি পে-লোডে ফিরিয়ে দেওয়া উচিত কিনা, বা উভয়ই ইত্যাদি is এবং তারপরে প্যালোডে কীভাবে তথ্য যুক্ত করা উচিত to সুনির্দিষ্ট অবস্থান যা ব্যবহার করা হয় তা হ'ল প্রশ্নের একটি নির্দিষ্ট দিককে সম্মান জানানো।
মানাচি

584

আপনার API এর জন্য সঠিক HTTP ত্রুটি কোডটি বাছাই করার একটি দুর্দান্ত উত্স: http://www.codetinkerer.com/2015/12/04/choosing-an-http-status-code.html

নিবন্ধের একটি অংশ:

কোথা থেকে শুরু:

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

2XX / 3XX:

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

4xx:

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

5xx:

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


1
422 বিশেষত একটি ওয়েবডিএভি এক্সটেনশন। আমি মনে করি এটি এখানে হওয়া উচিত নয়।
মারিও

@ মারিও এটি এখানে বর্ণিত শর্তগুলির প্রতিক্রিয়া হিসাবে 422 এর ফিরিয়ে দিতে রেলস এপিআই-এর রুবিতে বুদ্ধিমানের মত। ইতিমধ্যে ইতিমধ্যে প্রচুর ভাল অনুসরণ। আপনি কীসের জন্য 422 এর ব্যবহারগুলি প্রতিস্থাপন করবেন?
কেলসি হান্নান

নিয়মিত পুরানো 400
অ্যান্ডব্রিডু

ধন্যবাদ. "আপনি কি রাগ ছেড়ে ইন্টারনেট ছাড়ছেন?" এর অর্থ কী?
রাউটসম্যাপস.কম

@ ক্রিমিয়ান.ইস google.com/search?q=define+rage-quit
ওমর আলী

87

প্রধান পছন্দটি হ'ল আপনি কি এইচটিটিপি স্থিতির কোডটিকে আপনার আরএসটি এপিআইর অংশ হিসাবে চিকিত্সা করতে চান।

দুটি উপায়ই ঠিকঠাক কাজ করে। আমি সম্মত হই যে, কঠোরভাবে বলতে গেলে, আরইএসটি-র একটি ধারণা হ'ল আপনার এপিআই-র অংশ হিসাবে আপনার HTTP স্থিতি কোডটি ব্যবহার করা উচিত (সফল ক্রিয়াকলাপের জন্য 200 বা 201 এবং বিভিন্ন ত্রুটির মামলার উপর নির্ভর করে 4Xxx বা 5xx) However , সেখানে কোনও আরইএসটি পুলিশ নেই। তুমি যা চাও তাই করতে পারো. আমি অনেক বেশি অবিস্মরণীয় নন-আরএসএসআইপিগুলিকে "RESTful" বলা হচ্ছে দেখেছি।

এই মুহুর্তে (আগস্ট, ২০১৫) আমি আপনাকে সুপারিশ করি যে আপনি আপনার এপিআই এর অংশ হিসাবে HTTP স্থিতি কোডটি ব্যবহার করুন। অতীতের চেয়ে ফ্রেমওয়ার্কগুলি ব্যবহার করার সময় রিটার্ন কোডটি দেখতে এখন অনেক সহজ। বিশেষত, নন -200 রিটার্ন কেস এবং অতীতের চেয়ে 200-নন প্রতিক্রিয়াগুলির মূল অংশ এখন দেখতে পাওয়া সহজ।

এইচটিটিপি স্থিতি কোডটি আপনার এপিআইর অংশ

  1. আপনার ত্রুটি শর্তগুলির সাথে মাপসইভাবে সাবধানে 4XX কোড বাছাই করতে হবে। আপনি পে-লোড হিসাবে বিশ্রাম, এক্সএমএল বা প্লেইন্টেক্সট বার্তা অন্তর্ভুক্ত করতে পারেন যাতে একটি উপ-কোড এবং একটি বর্ণনামূলক মন্তব্য অন্তর্ভুক্ত থাকে।

  2. ক্লায়েন্টদের এমন একটি সফ্টওয়্যার কাঠামো ব্যবহার করা দরকার যা এইচটিটিপি-স্তরীয় স্থিতি কোডটিতে তাদের সক্ষম করে। সাধারণত করণে সক্ষম, সর্বদা সরাসরি-এগিয়ে না।

  3. ক্লায়েন্টদের HTTP স্থিতি কোডগুলির মধ্যে পার্থক্য করতে হবে যা একটি যোগাযোগের ত্রুটি এবং আপনার নিজস্ব স্থিতি কোডগুলিতে ইঙ্গিত করে যা একটি অ্যাপ্লিকেশন-স্তরের সমস্যা নির্দেশ করে।

এইচটিটিপি স্থিতি কোডটি আপনার এপিআই-র অংশ নয়

  1. আপনার অ্যাপ্লিকেশনটি অনুরোধটি গ্রহণ করে এবং তারপরে প্রতিক্রিয়া জানালে HTTP স্থিতি কোডটি সর্বদা 200 হবে (সাফল্য এবং ত্রুটি উভয় ক্ষেত্রে)

  2. আপনার সমস্ত প্রতিক্রিয়ায় "খাম" বা "শিরোনাম" তথ্য অন্তর্ভুক্ত করা উচিত। সাধারণত কিছু:

    খাম_ভার: 1.0
    স্থিতি: # আপনার পছন্দ মত যে কোনও কোড ব্যবহার করুন। সাফল্যের জন্য একটি কোড সংরক্ষণ করুন।
    msg: "ঠিক আছে" # একটি মানব স্ট্রিং যা কোড প্রতিবিম্বিত করে। ডিবাগিংয়ের জন্য দরকারী।
    ডেটা: ... # প্রতিক্রিয়ার ডেটা, যদি থাকে।
  3. এই পদ্ধতিটি ক্লায়েন্টদের পক্ষে সহজ হতে পারে যেহেতু প্রতিক্রিয়াটির জন্য স্থিতি সর্বদা একই জায়গায় থাকে (কোনও সাব-কোডের প্রয়োজন হয় না), কোডগুলির কোনও সীমাবদ্ধতা থাকে না, এইচটিটিপি-স্তরের স্থিতি-কোড আনার প্রয়োজন হয় না।

এখানে একটি অনুরূপ ধারণা সহ একটি পোস্ট: http://yuiblog.com/blog/2008/10/15/datatable-260-part-one/

প্রধান সমস্যা:

  1. সংস্করণ সংখ্যা অন্তর্ভুক্ত করার বিষয়ে নিশ্চিত হন যাতে আপনি পরে প্রয়োজনে এপিআই এর শব্দার্থবিজ্ঞান পরিবর্তন করতে পারেন।

  2. ডকুমেন্ট ...


8
Ty। বিকল্প 2 যদিও বিশ্রামের পোশাকগুলিতে SOAP এর মতো মনে হচ্ছে ...
রিমাস রুসানু

138
না, 200 এর মাধ্যমে সবকিছু সুড়ঙ্গ করা মোটেও আরামদায়ক নয়। এটি মধ্যস্থতাকারীদের কোনও অপারেশনের ফলাফল বোঝার থেকে বাধা দেয়, যা কোনও প্রকারের ক্যাচিংকে মেরে ফেলবে, এটি অপারেশনের শব্দার্থকে আড়াল করে, এবং এটি কোনও ত্রুটি প্রক্রিয়া করার জন্য বার্তাটির বিষয়বস্তু বোঝার চাপ দেয়, স্ব-অন্তর্ভুক্ত বার্তাগুলির সীমাবদ্ধতা লঙ্ঘন করে।
সিরিয়ালসেব

13
200 এর সাথে ত্রুটির বিশদ বিবরণ ফিরিয়ে দেওয়া হয়তো বিশ্রামের মতো না, তবে এটি তবে একটি কার্যকর উত্তর (যদি আপনি "উভয় উপায়ই প্রশান্তিযুক্ত" মন্তব্যকে উপেক্ষা করেন) ... বৃহত্তর বিষয়টি এটি হতে পারে যে কোনও রেস্টস্টুল এপিআই এর পক্ষে সেরা বিকল্প নাও হতে পারে for ওপি।
এমবি

3
এখানে একটি সাধারণ বোঝা যাচ্ছে যে আপনি এইচটিটিপি প্রোটোকলের সাহায্যে যা কিছু করতে পারেন এবং এখনও "RESTy" হতে পারেন, এটি মিথ্যা। এটি যা লিখেছে তার জন্য প্রোটোকলটি ব্যবহার করুন, এটি REST এর অন্যতম মূল ধারণা ideas সুতরাং স্থিতি কোডটি অবশ্যই আপনার প্রোটোকলের অংশ হওয়া উচিত
এরিয়েল এম

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

40

মনে রাখবেন HTTP / 1.1 আরএফসিগুলিতে সংজ্ঞায়িত সংখ্যার চেয়ে আরও স্ট্যাটাস কোড রয়েছে, আইএএনএ রেজিস্ট্রিটি http://www.iana.org/assignments/http-status-codes এ রয়েছে । কেসটির জন্য আপনি স্থিতির কোডটি উল্লেখ করেছেন 507 সাউন্ড।


3
হুম, এক নজরে "507 অপর্যাপ্ত স্টোরেজ" মনে হচ্ছে এটি যথাযথ বলে মনে হচ্ছে, আমি এটি ব্যবহার করার বিষয়ে উদ্রেক করব যেহেতু এটি একটি (মোটামুটি নির্দিষ্ট) ওয়েবডিএভি এক্সটেনশান হিসাবে উদ্দেশ্য এবং কোনও জেনারেল "হেই আপনি স্থানের বাইরে নন" ব্যতিক্রম। তবুও, আমি মনে করি আপনি এটি ব্যবহার করতে পারেন।
সর্বোচ্চ

1
না, এটি মোটেই ওয়েবডিএভি-নির্দিষ্ট নয়। এইচটিটিপি স্থিতি কোডগুলির জন্য একটি রেজিস্ট্রি থাকার কারণ রয়েছে।
জুলিয়ান রিশকে

25
আমি 507এই উদ্দেশ্যে একমত না । আমার ব্যাখ্যাটি 507হ'ল সার্ভারটি স্থানের বাইরে, অ্যাকাউন্টটি স্থানের বাইরে নয়।
প্যাট্রিক

11
আমি প্যাট্রিকের সাথে একমত 5xxসার্ভারের সাথে করার জন্য ত্রুটিগুলি ত্রুটি।
শন

10
418: "আমি একটি টিপট" বোঝাচ্ছি যে স্টোরেজ স্পেসটি খুব কম (যেমন একটি চিবুকটি সামান্য) বড় এবং এইভাবে স্থানের বাইরে।
স্টিভ কনভেস

22

অন্যরা যেমন উল্লেখ করেছে, ত্রুটি কোডে প্রতিক্রিয়া সত্তা থাকা পুরোপুরি অনুমোদিত।

মনে রাখবেন যে 5XX ত্রুটিগুলি সার্ভার-সাইড, ওরফে ক্লায়েন্টটি অনুরোধটি পাস করার জন্য তার অনুরোধে কোনও কিছুই পরিবর্তন করতে পারে না। যদি ক্লায়েন্টের কোটা অতিক্রম করে, তবে এটি অবশ্যই সার্ভার ত্রুটি নয়, সুতরাং 5XX এড়ানো উচিত।


আমি একমত হবে না। কোটা অতিক্রম করা একটি সার্ভার ত্রুটি (5XX) হতে পারে কারণ: ক্লায়েন্টের অনুরোধটি বৈধ এবং কোটার অধীনে যদি এটি সফল হয় তবে 40000 এর বিধি বিধানকে বাতিল করে।
মাইকেক 3332002

3
কিন্তু সার্ভারটি কোনও ভুল করেনি।
চার্লি শ্লিয়েসার

20

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

5xx সার্ভার সমস্যা

500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported
506 Variant Also Negotiates (RFC 2295 )
507 Insufficient Storage (WebDAV) (RFC 4918 )
509 Bandwidth Limit Exceeded (Apache bw/limited extension)
510 Not Extended (RFC 2774 )

2xx সাফল্য

200 OK
201 Created
202 Accepted
203 Non-Authoritative Information (since HTTP/1.1)
204 No Content
205 Reset Content
206 Partial Content
207 Multi-Status (WebDAV)

তবে, আপনি কীভাবে আপনার অ্যাপ্লিকেশন ত্রুটিগুলি ডিজাইন করেন তা সত্যিই আপনার উপর নির্ভর করে। স্ট্যাক ওভারফ্লো উদাহরণস্বরূপ সঙ্গে একটি বস্তু পাঠায় response, dataএবং messageবৈশিষ্ট্য। আমি বিশ্বাস করি যে প্রতিক্রিয়া রয়েছে trueবা falseঅপারেশন সফল ছিল কিনা তা নির্দেশ করতে (সাধারণত লেখার ক্রিয়াকলাপের জন্য)। ডেটাতে পে-লোড (সাধারণত পঠিত অপারেশনের জন্য) থাকে এবং বার্তায় কোনও অতিরিক্ত মেটাডেটা বা দরকারী বার্তা থাকে (যেমন যখন ত্রুটির বার্তা responseথাকে false)।


1
ক্লায়েন্ট অ্যাপ্লিকেশনটিতে সমস্যা চিহ্নিত করতে 400ও সহায়ক।
ডলম্যান

19

আমি জানি যে এটি পার্টির পক্ষে খুব দেরি হয়ে গেছে, তবে এখন, ২০১৩ সালে আমাদের কাছে সাধারণ বিতরণকৃত (আরইএসটিফুল) ফ্যাশনে ত্রুটি পরিচালনা করার জন্য কয়েকটি মিডিয়া টাইপ রয়েছে। "Vnd.error", অ্যাপ্লিকেশন / vnd.error + json ( https://github.com/blongden/vnd.error ) এবং "HTTP এপিআইয়ের জন্য সমস্যা সম্পর্কিত বিবরণ", অ্যাপ্লিকেশন / সমস্যা + জেসন ( https: // সরঞ্জামগুলি দেখুন)। ietf.org/html/draft-nottingham-http-problem-05 )।


2
লিঙ্কগুলির জন্য ধন্যবাদ। খসড়া- নটিংহাম- http-সমস্যা এখন একটি প্রস্তাবিত স্ট্যান্ডার্ড: datatracker.ietf.org/doc/rfc7807
এইচপি

9

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

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


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

3
যদি আপনি 200 টি ওকে পান তবে আপনার ব্যবসায়ের বিধিগুলির উপর নির্ভর করে আপনি এটিও পার্স না করা বেছে নিতে পারেন। মূল বিষয়টি নয় যে আমরা এটি সর্বদা পার্স করি বা না করি। পয়েন্টটি হ'ল উদ্দেশ্য - 200 ওকে ঠিক করার উদ্দেশ্য কী? 200 টি ঠিক আছে মোড়ানো ত্রুটি বার্তা প্রেরণ করে আপনি উদ্দেশ্যটিকে ক্ষতিগ্রস্থ করছেন।
কিংজ 21

1
"200 ওকে ঠিক করার উদ্দেশ্য কী?" - পরিবহন স্তরের সাফল্য নির্দেশ করে। অনুরোধটি সাফল্যের সাথে গৃহীত হয়েছে এবং উত্তর দেওয়া হয়েছে, কেবলমাত্র একটি অ্যাপ্লিকেশন নির্দিষ্ট সমস্যা ছিল যা এইচটিটিপি-র কিছু করার নেই। +++ অন্যভাবে রাখুন: বিশ্রাম বিশ্বে 404 প্রেরণের অর্থ হল যে কিছু পাওয়া যায় নি, সম্ভবত URL টি সাধারণ ভুল বা প্রক্রিয়াজাতকরণের উত্স বা অন্য কিছু খুঁজে পাওয়া যায় নি। বার্তাটি বিশ্লেষণ না করে আপনি পারবেন না। IMHO REST কেবল স্তরগুলিকে বিভ্রান্ত করছে।
মার্টিনাস

দ্বন্দ্ব হ'ল আদর্শ। এটি আপনার যুক্তির লাইনের সাথে খাপ খাইয়ে দেওয়ার জন্য একটি সিনট্যাক্স সরবরাহ করে এবং আপনাকে ব্যবসায়ের স্তরে মনোনিবেশ করতে মুক্তি দেয়। পরিবহণের পরে স্থিতি সংক্রান্ত comms এর সাথে সম্মত - উদ্দেশ্যটি প্রথম স্থানে কী ছিল - এইচটিটিপি-র সাথে একযোগে REST আবিষ্কার / প্রস্তাব করা হয়নি - এটি পরে এসেছিল এবং কেবলমাত্র স্ট্যাটাস এবং তাদের পরিবর্তনগুলি উপস্থাপনের জন্য বিদ্যমান অবকাঠামোটি ব্যবহার করার সিদ্ধান্ত নিয়েছে।
কিংজ 8'18


5

দয়া করে প্রোটোকলের শব্দার্থকে আটকে দিন। সফল প্রতিক্রিয়াগুলির জন্য 2xx এবং ত্রুটি প্রতিক্রিয়াগুলির জন্য 4XX, 5xx ব্যবহার করুন - এটি আপনার ব্যবসায় ব্যতিক্রম বা অন্য যাই হোক না কেন। প্রোটোকলটিতে অভিযুক্ত ব্যবহারের ক্ষেত্রে যে কোনও প্রতিক্রিয়ার জন্য 2 xx ব্যবহার করা থাকলে তাদের প্রথমে অন্য স্ট্যাটাস কোড থাকত না।


3

অ্যাপ্লিকেশন ত্রুটিগুলির পাশাপাশি 5XX ত্রুটিগুলি ভুলে যাবেন না।

এই ক্ষেত্রে 409 (সংঘাত) সম্পর্কে কী? এটি ধরে নেওয়া হয় যে ব্যবহারকারী সঞ্চিত সংস্থানগুলি মুছে ফেলে সমস্যার সমাধান করতে পারে।

অন্যথায় 507 (সম্পূর্ণ স্ট্যান্ডার্ড নয়) এছাড়াও কাজ করতে পারে। আপনি 200 টি সাধারণ ব্যবহার না করে 200 ব্যবহার করবেন না।


-1

যদি ক্লায়েন্টের কোটা অতিক্রম করে তবে এটি একটি সার্ভার ত্রুটি, এই পরিস্থিতিতে 5XX এড়ান।


2
5XX সিরিজের ত্রুটিগুলি যখন সার্ভার ত্রুটির জন্য থাকে তখন এড়াবেন কেন?
মাইকেক 3332002

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