অবৈধ ডেটার জন্য REST প্রতিক্রিয়া কোড


272

নিম্নলিখিত পরিস্থিতিগুলির ক্ষেত্রে ক্লায়েন্টকে কী প্রতিক্রিয়া কোড দেওয়া উচিত?

  1. ভুল ইমেল ফর্ম্যাটের মতো ব্যবহারকারী রেজিস্ট্রেশন করার সময় অবৈধ ডেটা পাস হয়েছে
  2. ব্যবহারকারীর নাম / ইমেল ইতিমধ্যে বিদ্যমান

আমি 403 বেছে নিয়েছি following আমি নিম্নলিখিতগুলিও দেখতে পেয়েছি যা আমি ব্যবহার করতে পারি বলে মনে করি।

উইকিপিডিয়া:

412 পূর্বশর্ত ব্যর্থ হয়েছে: অনুরোধকারী অনুরোধটিতে যে পূর্বশর্ত রেখেছিল তা সার্ভারটি পূরণ করে না

আমার 403 এর চেয়ে অন্য ব্যবহার করা উচিত যদি কোডের পরামর্শ দিন।


সম্ভাব্য অনুরূপ: stackoverflow.com/questions/3050518/...
Genjo

আমি এই সমস্যাটিও সমাধান করছি। অধ্যায় 7. জ্যাকস-আরএস স্পেসের বাতিলকরণ (2017) বিশেষভাবে সীমাবদ্ধতা লঙ্ঘনের জন্য স্থিতি কোডের পরামর্শ সরবরাহ করে। download.oracle.com/otn-pub/jcp/jaxrs-2_1-final-spec/…
বার্নটুগার

উত্তর:


298

উভয় ক্ষেত্রেই 400 সবচেয়ে ভাল পছন্দ। আপনি যদি ত্রুটিটি আরও স্পষ্ট করতে চান তবে আপনি কারণ যুক্তিটি পরিবর্তন করতে পারেন বা ত্রুটিটি ব্যাখ্যা করার জন্য একটি বডি অন্তর্ভুক্ত করতে পারেন।

412 - পূর্ব-পরিবর্তিত তারিখ এবং ইটি্যাগগুলি ব্যবহার করার সময় শর্তযুক্ত অনুরোধগুলির জন্য পূর্ব শর্ত ব্যর্থ হয়।

403 - সার্ভার যখন কোনও সংস্থার অ্যাক্সেস রোধ করতে চায় তখন নিষিদ্ধ ব্যবহার করা হয়।

কেবলমাত্র অন্য যে পছন্দটি সম্ভব তা হ'ল 422 - অপ্রয়োজনীয় সত্তা।


10
যদিও এটি প্রায়শই এই প্রসঙ্গে ব্যবহৃত হয়, 403 কেবলমাত্র নিয়ন্ত্রণে সীমাবদ্ধ নয়, যেহেতু rfc2616-10.4.4 বলেছেন: "সার্ভারটি অনুরোধটি বুঝতে পেরেছিল, তবে তা পূরণ করতে অস্বীকার করছে [[...] যদি সার্ভারটি এটি করতে চায় তবে কেন অনুরোধটি পূরণ করা হয়নি তা সর্বজনীনভাবে সত্তায় অস্বীকার করার কারণটি বর্ণনা করা উচিত। কারণটি অবৈধ ডেটা হতে পারে। তবে, 422 এখানে আরও প্রযোজ্য।
ইয়্যানিক লোইজউ

7
আসুন আমরা পাঠ্য সমালোচনায় জড়িয়ে পড়ি না। উদাহরণস্বরূপ trac.tools.ietf.org/wg/httpbis/trac/ticket/294 দেখুন যা 403 হ'ল এবং সর্বদা অনুমোদনের বিষয়ে ছিল cla
ফুমানছু

2
পছন্দ করেছেন পরিবর্তনের অনুরোধের একটি লিঙ্ক যা কেবল hours ঘন্টা পুরানো :-)
ড্যারেল মিলার

1
@ ফুমানছু এর অর্থ 403 জনকে ফেরত দেওয়া উচিত যদি ব্যবহারকারীদের কাছে অনুরোধ করা সংস্থান অ্যাক্সেস করার অনুমতি না থাকে। তবে আমি মনে করি 401 অননুমোদিত এমন সংস্থানটিতে অ্যাক্সেসের জন্য আরও উপযুক্ত যাটির ব্যবহারকারীর অনুমতি নেই।
অমিত প্যাটেল

1
401 অননুমোদিত একটি ওয়েব ব্রাউজারকে ব্যবহারকারীকে স্ট্যান্ডার্ড HTTP ব্যবহারকারীর নাম / পাসওয়ার্ড প্রম্পট দেখাতে প্রম্পট করবে। আপনি যদি আপনার পরিষেবার জন্য এই ধরণের প্রমাণীকরণ ব্যবহার করছেন না বা ব্যবহারকারী ইতিমধ্যে HTTP প্রমাণীকরণ পেয়েছেন, তবে 401 উপযুক্ত নয়।
গ্রেগ বল

92

আমি ৪২২ টি সুপারিশ করব It's এটি মূল এইচটিটিপি অনুচ্ছেদের অংশ নয়, তবে এটি পাবলিক স্ট্যান্ডার্ড (ওয়েবডিএভি) দ্বারা সংজ্ঞায়িত করা হয়েছে এবং এটি ব্রাউজারগুলির দ্বারা অন্য 4XX স্থিতির কোডের মতোই আচরণ করা উচিত।

আরএফসি 4918 থেকে :

422 (অপ্রসারণযোগ্য সত্তা) স্থিতি কোডটির অর্থ সার্ভারটি অনুরোধ সত্তার সামগ্রীর ধরণটি বোঝে (অতএব একটি 415 (অসমর্থিত মিডিয়া প্রকার) স্থিতি কোড অনুপযুক্ত), এবং অনুরোধ সত্তার বাক্য গঠনটি সঠিক (সুতরাং 400) বাজে অনুরোধ ) স্থিতি কোড অনুপযুক্ত) তবে এতে থাকা নির্দেশাবলী প্রক্রিয়া করতে অক্ষম ছিল। উদাহরণস্বরূপ, যদি কোনও এক্সএমএল অনুরোধের শরীরে সু-গঠিত (যেমন সিন্টেক্সটিক্যালি সঠিক) থাকে তবে এই শব্দ ত্রুটিযুক্ত শর্তটি হতে পারে, এক্সএমএল নির্দেশাবলী se


20
নোট করুন যে উদ্ধৃত পাঠ্যটিতে বলা হয়েছে যে 422 প্রযোজ্য হবে যখন অনুরোধ সত্তা সিনট্যাকটিকভাবে সু-গঠিত হয়, তবে শব্দার্থগতভাবে ভ্রান্ত হয়। যদি অনুরোধ সত্তা জমা দেওয়া হয়, 400 উপযুক্ত প্রতিক্রিয়া।
ম্যাটি কে

87

যদি অনুরোধটি সঠিকভাবে পার্স করা না যায় (অনুরোধ সত্তা / বডি সহ) যথাযথ প্রতিক্রিয়া 400 টির খারাপ অনুরোধ [ 1 ]।

আরএফসি 4918 বলেছে যে 422 অপ্রাপ্তিযোগ্য সত্তা প্রযোজ্য হবে যখন অনুরোধ সত্তা সিনট্যাকটিকভাবে সু-গঠিত হয়, তবে শব্দার্থগতভাবে ভ্রান্ত হয়। সুতরাং যদি অনুরোধ সত্তা গার্ফ করা হয় (খারাপ ইমেল ফর্ম্যাটের মতো) 400 ব্যবহার করুন; তবে যদি এটি ঠিক বোঝায় না (যেমন @example.com) 422 ব্যবহার করুন।

যদি সমস্যাটি হ'ল, প্রশ্নে বর্ণিত হিসাবে, ব্যবহারকারীর নাম / ইমেল ইতিমধ্যে বিদ্যমান রয়েছে, আপনি বিরোধের বিবরণ সহ 409 সংঘাত [ 2 ] এবং এটি কীভাবে ঠিক করবেন সে সম্পর্কে একটি ইঙ্গিত ব্যবহার করতে পারেন (এই ক্ষেত্রে, "বেছে নিন বিভিন্ন ব্যবহারকারীর নাম / ইমেল ")। তবে লিখিত হিসাবে অনুমান অনুসারে, 403 নিষিদ্ধ [ 3 ] এই ক্ষেত্রেও ব্যবহার করা যেতে পারে, এইচটিটিপি অনুমোদন সত্ত্বেও তর্ক।

412 পূর্বশর্ত ব্যর্থ [ 4 ] ব্যবহৃত হয় যখন ক্লায়েন্ট দ্বারা সরবরাহ করা পূর্ব শর্ত অনুরোধ শিরোনাম (যেমন If-Match) মিথ্যাতে মূল্যায়ন করে। এটি হ'ল, ক্লায়েন্টটি কিছু অনুরোধ করেছিল এবং পূর্ব শর্ত সরবরাহ করে, পুরোপুরি জেনে যে এই পূর্বশর্তগুলি ব্যর্থ হতে পারে। 412 কখনই নীল থেকে ক্লায়েন্টের উপরে স্প্রিং করা উচিত নয়, এবং প্রতি সেবার অনুরোধ সত্তার সাথে সম্পর্কিত হওয়া উচিত নয় ।


1
আমার আপডেট হওয়া এইচটিটিপি / ১.১ আরএফসি নোট করা উচিত: ৪০০ টি খারাপ অনুরোধ, ৪০৯ সংঘাত, ৪০৩ নিষিদ্ধ ইত্যাদি সরঞ্জামগুলিতে লাইভ থাকে ; 412 পূর্বাবস্থা ব্যর্থ হয়েছে হয় tools.ietf.org/html/rfc7232#section-4.2
Matty কে

41

418 I'm a teapotসিএসআরএফ চেক করতে ব্যর্থ হওয়া বা অনুরোধের বৈশিষ্ট্য অনুপস্থিত করার মতো এমন অনুরোধগুলিতে প্রত্যাবর্তন করা মজাদার বিষয় যা স্পষ্টতই তৈরি করা বা দূষিত এবং "ঘটতে পারে না"।

২.৩.২ 418 আমি একটি চাঁচি

একটি চাপোট দিয়ে কফি তৈরির যে কোনও প্রয়াসের ফলস্বরূপ ত্রুটি কোড "418 আমি একটি চাঁচা" হওয়া উচিত। ফলস্বরূপ সত্তা দেহটি সংক্ষিপ্ত এবং দুরন্ত হতে পারে।

এটি যুক্তিসঙ্গতভাবে গুরুতর রাখতে, আমি মজাদার ত্রুটি কোডগুলির ব্যবহারকে RESTful শেষ পয়েন্টগুলিতে সীমাবদ্ধ করি যা ব্যবহারকারীর কাছে সরাসরি প্রকাশিত হয় না।


11
এটি প্রয়োগ করুন যাতে আপনার 418 I'm a teapotবস থেকে আগত সমস্ত অনুরোধের জন্য আপনার এপিআই ফেরত দেয় :)
ভিকারজমুন

2
@ ভিকার্জরামুন আমি একটি ডামি আরআরএসটি তৈরি করে এবং একটি অফলাইনে বিবেচনাধীন করে তুলেছি। (প্রিরিলিজ) এখন আমাদের শিক্ষার্থীরা বৈধ ডেটা-রিকোয়েস্টগুলি তৈরি করার চেষ্টা করছে তবে এটি সমস্ত টিপোট। আমি "বস" - তবে এটি খুব কাজ করছে।
LenglBoy

2
এই আরএফসিটি বোবা। আপনি একটি চা পাত্রে কফি তৈরি করতে পারেন, যতক্ষণ আপনি এটি আপনার কাপে একটি চা স্ট্রেনারের মাধ্যমে pourালেন। যেমন আলগা পাতার চা ব্যবহার করা। কোনও সমস্যা ছাড়াই আপনি একটি ক্যাফেটিতে চা তৈরি করতে পারেন।
gburton

2
@gburton এর জন্য যদিও কোনও মানুষের দ্বারা হস্তক্ষেপের প্রয়োজন নেই। নেটওয়ার্ক জুড়ে আপনার অবশ্যই কফি তৈরির জন্য একটি কফি-সক্ষম ডিভাইস প্রয়োজন। অবশ্যই, একটি কফি-এবং-তেপোট কোনও 418 এর সাথে সাড়া দেয় না
জ্যাস্পার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.