সঠিক HTTP স্থিতি কোডটি কী: "এই API এর এই সংস্করণটি বন্ধ করে দেওয়া হয়েছে"?


13

আমার একটি রেস্টলফুল এপিআই রয়েছে। এর 3 টি সংস্করণ রয়েছে: ভি 1, ভি 2 এবং ভি 3। আমি v4 প্রকাশ করতে চলেছি, এবং আমরা ভি 1 বন্ধ করার সিদ্ধান্ত নিয়েছি, যার অর্থ সমস্ত অনুরোধ http://example.com/v1/resourceব্যর্থ হবে, তবে কলগুলি http://example.com/v2/resourceকাজ চালিয়ে যাবে।

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

আমি জেনেরিক 400স্থিতি কোড হিসাবে বিবেচনা করেছি , তবে এটি পাশাপাশি অদ্ভুত বলে মনে হয়েছিল। এর কি কোনও মানক উত্তর আছে?


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

উত্তর:


11

মানক বলে মনে হয় না।

স্ট্যাকওভারফ্লো উত্তর 410 জনের দিকে ঝুঁকেছে , তবে আমি মনে করি 301 মুভিং স্থায়ীভাবে আরও উপযুক্ত।

সঠিক পছন্দ করতে, আমাদের আপনার নির্দিষ্ট কেসটি দেখতে হবে। যদি আপনার লক্ষ্যটি হয় যে কোনও অ্যাপলিকেশন v1 এ সমস্ত কল করা কোনও পদক্ষেপ না নিয়েই ব্যর্থ হয়, 410 GONE তার জন্য কাজ করে। যদি আপনি কিছু ধারাবাহিকতা চান যেমন ক্লায়েন্টকে আপনার API এর নতুন সংস্করণে পুনর্নির্দেশ করা যেখানে তাদের কলটি সফল হতে পারে, 3XX কাজ করে, তবে আপনি কোনটি বেছে নিন? আমি মনে করি আপনি যদি API v1 বন্ধ করে দেওয়ার চেষ্টা করছেন, 301 স্থায়ীভাবে স্থিতিশীলভাবে 303 এর চেয়েও ভাল এটি নির্দেশ করতে সহায়তা করে কারণ 301 পরামর্শ দেয় যে ভবিষ্যতের সমস্ত অনুরোধগুলি নতুন url এ করা উচিত যেখানে 303 এই পরিস্থিতিটি আছে কিনা তা নির্দেশ করে না স্থায়ী।

আমি এপিআই ইঞ্জিনিয়ারিংকে এমনভাবে প্রস্তাব দিচ্ছি যাতে প্রতিটি সংস্করণ পিছনের দিকে সামঞ্জস্যপূর্ণ থাকে, যাতে 301 মুভিড স্থায়ীভাবে আপনার এপিআইটিকে স্বচ্ছভাবে বজায় রাখতে এবং আপ টু ডেট রাখে যখনই আপনি নতুন এপিআই সংস্করণের জন্য নতুন এন্ডপয়েন্টগুলি যুক্ত করবেন। আমি মনে করি আপনি যেভাবেই এটি করার চেষ্টা করছেন।

HTTP স্থিতি কোডসমূহ

এইচটিটিপি স্থিতি কোড 302 মূলত খুব বিস্তৃত ছিল এবং এটি ভুলভাবে প্রয়োগ / ব্যবহৃত হয়ে যায়, সুতরাং 302 এর দ্বৈত ব্যবহারের ক্ষেত্রে পার্থক্য করতে 303 এবং 307 তৈরি করা হয়েছিল। কিছু এপিআই 303 অন্যান্য উদ্দেশ্যে ব্যবহার করে।

301 স্থানান্তরিত স্থায়ীভাবে - 301 (স্থায়ীভাবে সরানো) স্থিতি কোডটি নির্দেশ করে যে লক্ষ্য সংস্থানটি একটি নতুন স্থায়ী ইউআরআই অর্পণ করা হয়েছে এবং এই সংস্থানটিতে ভবিষ্যতের কোনও রেফারেন্স বদ্ধ ইউআরআইয়ের একটি ব্যবহার করা উচিত।

302 ফাউন্ড - 302 (পাওয়া) স্থিতি কোডটি নির্দেশ করে যে লক্ষ্য সংস্থানটি সাময়িকভাবে আলাদা ইউআরআইয়ের অধীনে থাকে। যেহেতু উপলক্ষ্যে পুনঃনির্দেশটি পরিবর্তন করা যেতে পারে, তাই ক্লায়েন্টকে ভবিষ্যতের অনুরোধগুলির জন্য কার্যকর অনুরোধ ইউআরআই ব্যবহার চালিয়ে যাওয়া উচিত।

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

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

বিদ্যমান API গুলি কীভাবে এটি পরিচালনা করে?

হতে পারে আপনি গুগলের ইউটিউব এপিআই থেকে একটি পৃষ্ঠা নিতে পারেন :

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

আরও পড়া:


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

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

1

পুনঃনির্দেশগুলি সরানো সংস্থানগুলির জন্য দুর্দান্ত। 301 স্থায়ী পুনঃনির্দেশের পরিবর্তে (যা এপিআই পরিবর্তনগুলি ছাড়াই একটি নতুন নাম নির্দেশ করে), আমি 303 "অন্যান্য দেখুন" পুনঃনির্দেশ ব্যবহার করব।


0

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

10.5.2 501 প্রয়োগ করা হয়নি

অনুরোধটি পূরণের জন্য প্রয়োজনীয় ক্রিয়াকলাপটি সার্ভার সমর্থন করে না। এটি যথাযথ প্রতিক্রিয়া যখন সার্ভারটি অনুরোধের পদ্ধতিটি স্বীকৃতি দেয় না এবং কোনও সংস্থার জন্য এটি সমর্থন করতে সক্ষম হয় না।

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html


0

আমি পরিষেবাটি অনুপলব্ধ এবং এই সংস্করণটি আরও নতুন সংস্করণটি ব্যবহার করার জন্য নির্দেশিত করে 503 ব্যবহার করব। এই বার্তাটি 50% কলের জন্য ফিরে আসতে পারে এবং ধীরে ধীরে 100% এ উন্নীত হয়।

স্বচ্ছ মাইগ্রেশনের জন্য, আমি 308 ব্যবহার করব - স্থায়ী পুনঃনির্দেশ, কারণ এই পদ্ধতিটি 301 এর বিপরীতে ক্রিয়াটি (POST হবে POST হবে) পরিবর্তন করে না।

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