ধরা যাক আপনি ফোন GETকরে ব্যবহারকারীদের তালিকা পেতে চান api/usersতবে বর্তমানে টেবিলটি কেটে দেওয়া হয়েছে যাতে কোনও ব্যবহারকারী নেই। এই দৃশ্যের জন্য উপযুক্ত প্রতিক্রিয়া কী: 404বা 204?
/api/usersযখন একটি সম্পর্কে হয় /api/users/1।
ধরা যাক আপনি ফোন GETকরে ব্যবহারকারীদের তালিকা পেতে চান api/usersতবে বর্তমানে টেবিলটি কেটে দেওয়া হয়েছে যাতে কোনও ব্যবহারকারী নেই। এই দৃশ্যের জন্য উপযুক্ত প্রতিক্রিয়া কী: 404বা 204?
/api/usersযখন একটি সম্পর্কে হয় /api/users/1।
উত্তর:
আমি বলব, না।
404 স্থিতি কোড পরিস্থিতিগুলির জন্য সংরক্ষণ করা উচিত, যাতে কোনও সংস্থান পাওয়া যায় না। এই ক্ষেত্রে, আপনার সংস্থান ব্যবহারকারীদের সংগ্রহ । এই সংগ্রহটি বিদ্যমান তবে এটি বর্তমানে খালি। ব্যক্তিগতভাবে, আমি আপনার অ্যাপ্লিকেশনটির জন্য একজন ক্লায়েন্টের লেখক হিসাবে খুব বিভ্রান্ত হব যদি আমি 200একদিন এবং 404পরের দিন পেয়েছিলাম কারণ কেউ কেউ কয়েকজন ব্যবহারকারীকে অপসারণের জন্য ঘটেছে। আমার কী করা উচিত? আমার ইউআরএল ভুল? কেউ এআইপি পরিবর্তন করেছে এবং পুনর্নির্দেশটি ত্যাগ করতে অবহেলা করেছে?
ডাব্লু 3 সি দ্বারা 204 স্থিতি কোডের বর্ণনা থেকে একটি অংশ এখানে দেওয়া হয়েছে
সার্ভারটি অনুরোধটি পূরণ করেছে তবে কোনও সত্তা-দেহ ফেরত দেওয়ার দরকার নেই এবং সম্ভবত আপডেট মেন্টেরফর্মেশনটি ফিরে আসতে চাইবে।
যদিও এই ক্ষেত্রে এটি যুক্তিসঙ্গত মনে হতে পারে তবে আমি মনে করি এটি ক্লায়েন্টদের বিভ্রান্ত করবে। একটি 204ইঙ্গিত যে কিছু অপারেশন সফলভাবে মৃত্যুদন্ড দেয়া হয়েছে অনুমিত হয় এবং কোনো ডেটা করা প্রয়োজন। এটি কোনও DELETEঅনুরোধের প্রতিক্রিয়া হিসাবে বা সম্ভবত এমন কোনও স্ক্রিপ্ট ফায়ারিংয়ের জন্য উপযুক্ত যা ডেটা ফেরত দেওয়ার প্রয়োজন হয় না। এর ক্ষেত্রে api/users, আপনি সাধারণত আপনার ব্যবহারকারীদের সংগ্রহের উপস্থাপনা প্রত্যাশা করতে পারেন। প্রতিক্রিয়া বৌকে একবার পাঠানো এবং অন্য সময় এটি না পাঠানো অসঙ্গতিপূর্ণ এবং সম্ভাব্য বিভ্রান্তিকর।
উপরে বর্ণিত কারণে (ধারাবাহিকতা), আমি খালি সংগ্রহের উপস্থাপনা ফিরিয়ে দেব। ধরে নেওয়া যাক আপনি এক্সএমএল ব্যবহার করছেন। ব্যবহারকারীদের খালি খালি সংগ্রহের জন্য একটি সাধারণ প্রতিক্রিয়া সংস্থার মতো দেখতে পাওয়া যেতে পারে:
<users>
<user>
<id>1</id>
<name>Tom</name>
</user>
<user>
<id>2</id>
<name>IMB</name>
</user>
</users>
এবং যদি তালিকাটি খালি থাকে তবে আপনি ঠিক এরকম কিছু দিয়ে প্রতিক্রিয়া জানাতে পারেন (এখনও একটি ব্যবহার করার সময় 200):
<users/>
যে কোনও উপায়ে, একটি ক্লায়েন্ট একটি প্রতিক্রিয়া সংস্থা পাবেন যা একটি নির্দিষ্ট, সুপরিচিত ফর্ম্যাট অনুসরণ করে। কোনও অপ্রয়োজনীয় বিভ্রান্তি এবং স্থিতি কোড চেকিং নেই। এছাড়াও, কোনও স্থিতি কোড সংজ্ঞা লঙ্ঘন করা হয় না। সবাই খুশি।
আপনি JSON বা এইচটিএমএল বা আপনি যে কোনও ফর্ম্যাট ব্যবহার করছেন তা দিয়ে এটি করতে পারেন।
[]।
GET /singleCoin- আপনার পকেট থেকে এলোমেলো একক মুদ্রা দেয়, GET /severalCoins- আপনার পকেট থেকে কিছু মুদ্রা ফেরত দেয় যা আপনি একবারে দখল করতে পারেন। বলুন এখন আপনার পকেটে কোনও কয়েন নেই। যখন আপনাকে জিজ্ঞাসা GET /singleCoinআপনি পাবেন 404 Not Found, কিন্তু আপনাকে জিজ্ঞাসা GET /severalCoinsআপনি পাবেন 200 OKখালি তালিকা সঙ্গে []। একটি সত্য - আপনার কোনও কয়েন নেই, বিভিন্ন প্রতিক্রিয়া সহ বর্ণিত, কেন? আমি বলি এটি পাওয়া সর্বদা ভাল 404 Not Found, কারণ আপনার পকেটে কোনও কয়েন পাওয়া যায় নি।
GET /severalCoins। যদি আপনি আদেশ দেন যে GET /severalCoins অবশ্যই কিছু মুদ্রা ফিরিয়ে দিতে হবে তবে এটি 200 হওয়া উচিত নয় কারণ এটি ঠিক নয়; সার্ভার ক্লায়েন্ট যা চায় তা দিতে ব্যর্থ হয়েছে। জন্য /singleCoinএই সুস্পষ্ট কারণ ক্লায়েন্ট ঠিক একটি মুদ্রা, কোন, কম কোন চাই। এই জন্য একই /coins/7। /coinsশেষ পয়েন্টের বিপরীতে , সাধারণত ক্লায়েন্টরা কোনও মুদ্রা, একটি মুদ্রা বা একাধিক কয়েন আশা করে না। এগুলির সবই বৈধ প্রতিক্রিয়া। যদি কোনও মুদ্রা না থাকে, তবে তারা এটি চায়। এটি একটি emply মত List<Coin>পরিবর্তে, জাভা null।
রানটাইমের পরিস্থিতির উপর নির্ভর করে আমি দুটি কোডের মধ্যে একটির উত্তর দেব:
404 পাওয়া যায়নি)
আপনার উত্তর নেই যদি উত্তর নেই। শুধু খালি টেবিল নয়, কোনও ব্যবহারকারী টেবিলে নেই। এটি সঠিক ধারণাটিকে নিশ্চিত করে - কোনও সংস্থান নেই। আরও বিকল্পগুলি আরও বিশদ সরবরাহ করতে হবে কেন আপনার টেবিলটি অনুপস্থিত, আরও কয়েকটি বিশদ কোড রয়েছে তবে 404 এমন পরিস্থিতিটি উল্লেখ করা বেশ ভাল যা আপনার সত্যিকারের কোনও টেবিল নেই।
২০০ (ঠিক আছে)
সমস্ত ক্ষেত্রে যেখানে আপনার টেবিল রয়েছে তবে এটি খালি বা আপনার অনুরোধ প্রসেসর সমস্ত ফলাফল ফিল্টার করে। এর অর্থ 'আপনার অনুরোধটি সঠিক, সবকিছু ঠিক আছে তবে আপনি কোনও তথ্যের সাথে মেলে না কারণ আমাদের কাছে কোনও ডেটা নেই বা আমাদের কাছে কোনও অনুরোধ নেই যা আপনার অনুরোধের সাথে মেলে। এটি সুরক্ষা অস্বীকারের উত্তর থেকে আলাদা হওয়া উচিত। আমি আপনার কাছে কিছু ডেটা রয়েছে এমন পরিস্থিতিতে 200 টি ফিরিয়ে দেওয়ার পক্ষে ভোট দিচ্ছি এবং সাধারণভাবে আপনাকে টেবিলটি অ্যাক্সেস করার অনুমতি দেওয়া হয়েছে তবে আপনার অনুরোধের সাথে মেলে এমন সমস্ত ডেটাতে আপনার অ্যাক্সেস নেই (অবজেক্ট স্তরের সুরক্ষার কারণে ডেটা ফিল্টার করা হয়েছিল তবে সাধারণভাবে আপনাকে অনুমতি দেওয়া হয়েছে) অনুরোধ)।
404 অর্থ সম্পদ পাওয়া যায় নি। তবে রিসোর্স রয়েছে। এবং এছাড়াও, যদি প্রতিক্রিয়ার 404 স্থিতি থাকে। আপনি কীভাবে জানতে পারবেন যে ব্যবহারকারীদের তালিকা খালি বা ভরাট?