मैं वापस जाने के लिए उचित स्थिति कोड को खोजने के लिए कोशिश कर रहा हूँ, यहाँ क्या मैं अब तक मन में है है:आरईएसटी एपीआई उपयोगकर्ता किसी ऑब्जेक्ट को acces करने का प्रयास कर रहा है, तो एक HTTP स्थिति कोड का उपयोग करने के लिए और एक त्रुटि है?
GET /api/documents/1
- 200 ठीकGET /api/documents/2
- - दस्तावेज़ मौजूद है, उपयोगकर्ता करता दस्तावेज़ मौजूद है, उपयोगकर्ता पहुँच गया है एक्सेस नहीं है - 403 निषिद्धGET /api/documents/3
- दस्तावेज़ मौजूद नहीं है (जांच नहीं कर सकता है या नहीं) - 404 नहीं मिला? 403 निषिद्ध?GET /api/documents/a
- आईडी अमान्य है (एक संख्या होनी चाहिए) - 400 खराब अनुरोध? 404 नहीं मिला? 403 निषिद्ध?
मेरी बैकएंड के साथ समस्या यह इस समय (MongoDB का प्रयोग करके) पहली बात मैं कर जाँच उपयोगकर्ता वह की पहुंच है दस्तावेज़ ID की एक सूची के खिलाफ चेक करके उसे दस्तावेज़ तक पहुँच गया है, तो यह है कि है। यदि सूची में दस्तावेज़_आईडी नहीं मिली है, तो 403 निषिद्ध स्वचालित रूप से वापस आ गया है। यह मुझे दस्तावेज़ को डीबी से पहले लाने से बचने में मदद करता है ताकि यह देखने के लिए कि उपयोगकर्ता इसका उपयोग कर सकता है या नहीं।
मुझे यकीन नहीं है कि यहां सबसे अच्छा अभ्यास क्या होगा - क्या मुझे बेहतर HTTP स्थिति कोड (और इस प्रकार अतिरिक्त डीबी अनुरोध बनाना) का पीछा करना चाहिए या 403 अंतिम 2 मामलों (3 और 4) के लिए निषिद्ध काम भी करना चाहिए?
मेरे पास current_user ऑब्जेक्ट हमेशा उपलब्ध है और इसमें पहले से ही दस्तावेज़_आईड्स (मोंगो नेस्टेड दस्तावेज़, मूल रूप से) की सूची शामिल है। यह पहली चीज है जिसे मैं जांचता हूं और यदि दस्तावेज़_आईडी सूची में नहीं मिला था, तो मैं 403 निषिद्ध त्रुटि लौटाता हूं। हालांकि, अगर मैं यह जांचना चाहता था कि ऑब्जेक्ट मौजूद नहीं है, तो मुझे इसके लिए एक अलग डीबी क्वेरी बनाना होगा। – ragulka
@ragulka हां, लेकिन एक अतिरिक्त डीबी कॉल कैसे बनाएगा। आपसे सवाल है कि मैं समझ रहा हूं कि जब टीएच अनुरोध शुरू में किया जाता है, तो उपयोगकर्ता उस दस्तावेज़ पर प्रमाणित नहीं है, तो तुरंत आपकी वापसी 403 है। यदि वे प्रमाणीकृत हैं तो आप दस्तावेज़ की जांच करते हैं, और आप सोच रहे थे कि दस्तावेज गुम होने पर आपको 404 या 403 वापस करना चाहिए या नहीं। यदि आप उस मामले में 404 लौटते हैं, तो यह अतिरिक्त डीबी कॉल कैसे करेगा? –