সমালোচনা ত্রুটি না হিসাবে একটি REST এপিআইতে সতর্কতা


9

আমার একটি REST এপিআই রয়েছে যে ডিলিট, পোস্ট বা পুট এর মতো কিছু এনটপয়েন্টগুলির জন্য আমার কিছু বৈধতা বিধি রয়েছে যা একটি ত্রুটি ফিরিয়ে দিতে পারে।

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

প্রশ্ন : এই ধরণের ত্রুটিগুলির জন্য সর্বোত্তম অনুশীলন আছে কি?

দ্বিতীয় প্রশ্ন :

  • আমি ব্যবহার করতে পারি এমন আচরণের জন্য কি কোনও এইচটিটিপি সিমেন্টিক রয়েছে?
  • আমি কি এখনও বিশ্রামের ধারণা অনুসরণ করি (আমার কাছে মনে হয় এটি আমি করি) - আমি এটিকে রাষ্ট্রহীন রাখি

কোনও ব্যবহারকারীকে এই জাতীয় সতর্কতা প্রদর্শন করবেন কিনা আপনি কীভাবে সিদ্ধান্ত নেবেন? আপনি অ্যাপ্লিকেশন স্থিতি পরীক্ষা করতে একটি API এন্ডপয়েন্টটি কল করেন এবং তারপরে ব্যবহারকারী সাড়া না দেওয়া পর্যন্ত ইউআইকে অবরুদ্ধ করে এমন একটি ডায়ালগ উপস্থাপন করেন। তারপরে আপনি আসল কল করুন। আপনার এটিও আপনার সাথে REST এপিআই মডেল করা উচিত: এটি নির্দিষ্ট কিছু কাজ করা সংরক্ষণ করে কিনা তা পরীক্ষা করার জন্য একটি এন্ডপয়েন্ট যুক্ত করুন। এই উপায়ে যে কোনও এপিআই ব্যবহারকারী "প্রি-ফ্লাইট" চেক করতে সক্ষম এবং এমনকি কোনও ব্যবহারকারীর কাছে সিদ্ধান্ত ডেলিগেট করতে সক্ষম। আপনার এইচটিটিপি স্থিতি কোড পদ্ধতির মতো rm /fileএটির মতো ফাইলটি মুছে ফেলার সময় কেবল "সতর্কতা" রয়েছে।
শেষ পর্যন্ত

প্রোটোকল স্থিতি কোড দিয়ে ব্যবসায় ওভারল্যাপ হয়ে গেলে এটি ঘটে। যাইহোক। আপনি কি নিজের 'এইচটিটিপি স্থিতি কোড ব্যবহার করার চেষ্টা করেছিলেন? টুইটার যদি করতে পারে তবে আপনিও পারেন। উদাহরণস্বরূপ 6xx বলা যাক? যাইহোক আমি এখনও জানি, আপনি 4xX (এমনকি আপনার ক্ষেত্রে কোন পরিসীমাটি অ্যাপ্রোপিয়েটেড হবে) সত্ত্বেও প্রতিক্রিয়া সংস্থায় বার্তা যুক্ত করতে পারেন।
লাইভ

অবশেষে আমি 409 CONFLICTসতর্কতার প্রতিক্রিয়া ব্যবহার করেছি । এইভাবে, ক্লায়েন্টকে নির্দেশ দেওয়া হয়েছে যে এটি একই প্রান্ত পয়েন্টার "ফোর্স = 1" এর সাথে একই শেষ পয়েন্ট এবং শরীরের সাথে কলটি জোর করতে পারে
user237329

উত্তর:


4

HTTP তে কোনও সতর্কতা ফলাফলের কোড নেই, আপনি হয় সাফল্য (200) অথবা ত্রুটি (400, 500) ফেরান। আমি কেবল এটিই জানি যে আপনি যা চান তার সাথে অনুরূপ হতে পারে কোড 401 'অননুমোদিত' এর মতো - এটি সম্পূর্ণ ব্যর্থতা, তবে বেশিরভাগ ক্লায়েন্টকে শংসাপত্রগুলির সাথে স্বয়ংক্রিয়ভাবে পুনরায় চেষ্টা করার কারণ তৈরি করে।

একটি REST এপিআইয়ের জন্য আপনাকে সার্ভারকে অনুরোধের স্থিতি এবং ফলাফলটি কীভাবে পরিচালনা করতে হবে তা জানাতে হবে - ক্লায়েন্টটি শেষ না হলে আপনি একটি PUT প্রেরণ করতে এবং ত্রুটির প্রত্যাশা করতে পারবেন না বা এটির ক্ষেত্রে সাফল্য রয়েছে - সার্ভারকে এটি জানতে হবে সঠিক ফলাফলের কোডটি ফেরত পাঠানোর জন্য তথ্য।

সুতরাং আপনি আপনার অনুরোধের সাথে 'দমন সতর্কতা' পতাকাটি প্রেরণ করতে পারেন, যদি এটি সেট না করা থাকে তবে সার্ভার একটি 409 ত্রুটি কোড (বা অনুরূপ) প্রদান করবে এবং যদি সেট করা থাকে তবে পরিবর্তে 200 কোড ফেরত পাঠাবে। ব্যবহারকারীর স্থিতি পরিবর্তন প্রেরণের পরে 'আপনি কি এই স্ট্যাটাসটি পরিবর্তন করতে চান' জিজ্ঞাসা করা যাবে না।

আপনি যদি সার্ভারের কাছে জিজ্ঞাসা করতে অনুরোধ করতে পারেন যে ব্যবহারকারী অবশ্যই স্থিতি পরিবর্তন করতে পারে এবং তার পরে উপযুক্ত অনুরোধটি অনুসরণ করতে পারে।


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

0

আপনি যদি ব্যবহারকারীকে আপনার স্বাভাবিক ত্রুটি পরিচালনার ওভাররাইড করার অনুমতি দিতে চান তবে প্রসারিত HTTP শিরোনামগুলিতে অতিরিক্ত তথ্য সহ 200 SUCCESS স্থিতি ফিরিয়ে নিতে বিবেচনা করতে পারেন। উদাহরণস্বরূপ, আপনি ফিরে আসতে পারে

X-APP-STATUS: 422 Unprocessable entity
X-APP-SOURCE: Invalid ID 'fo0'

এটি আপনার ক্লায়েন্ট-সাইড কোডটি ব্যবহারকারীকে সতর্ক করতে বা তার নিজের থেকে সংশোধনমূলক পদক্ষেপ গ্রহণের জন্য প্রয়োজনীয় তথ্য দেবে।


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