ObjectId
. का उपयोग करने के बाद RESTful API में कई बार, सबसे बड़ा नकारात्मक पहलू यह है कि वे एक स्वच्छ URL होने के मामले में बहुत शोर करते हैं। आप या तो इसे एक HEX संख्या के रूप में छोड़ देंगे, या इसे एक बहुत बड़ी पूर्णांक संख्या में बदल देंगे, जिससे कुछ हद तक अमित्र URL बन जाएगा:
/rest/resource/52435dbecb970072ec3a780f
/rest/resource/25459211534898951476729247759
मैंने URL में एक "शीर्षक" जोड़ा है (जैसे StackOverflow करता है) उन्हें थोड़ा अधिक अनुकूल बनाने के लिए:
/rest/resource/52435dbecb970072ec3a780f/FriendlyResourceName
बेशक, सॉफ़्टवेयर में "शीर्षक" को अनदेखा किया जाता है, लेकिन उपयोगकर्ता इसे देखता है और पागल आईडी खंड को मानसिक रूप से अनदेखा कर सकता है।
बुनियादी ढांचे को उजागर करके बहुत कम उपयोगी चीजें सीखी जा सकती हैं:
- टाइमस्टैम्प
- मशीन आईडी
- प्रक्रिया आईडी
- यादृच्छिक वृद्धि मूल्य
संभावित रूप से मशीन आईडी एकत्र करने के अलावा (जो आमतौर पर ObjectId
. बनाने वाले ग्राहकों की संख्या को इंगित करता है s), वहाँ बहुत कुछ नहीं है।
ObjectId
s यादृच्छिक नहीं हैं, इसलिए आप उन्हें सुरक्षा के लिए उपयोग नहीं कर सकते। आपको हमेशा डेटा सुरक्षित करने की आवश्यकता होगी। हालांकि वे स्पष्ट रूप से वृद्धि नहीं कर सकते हैं, अन्य संसाधनों को पाशविक बल के माध्यम से खोजना आसान होगा। हालांकि, यदि आप पहले ऑटो-इंक्रीमेंटिंग आईडी का उपयोग कर रहे थे, तो यह आपके लिए कोई नई समस्या नहीं है।
यदि आप जानते हैं कि आप किसी भी समय कई नए दस्तावेज़ नहीं बना रहे हैं, तो सरल आईडी बनाने के लिए यहां किसी एक पैटर्न का उपयोग करना उचित हो सकता है। एक ऐप में मैंने लिखा था, मैंने कुछ दस्तावेज़ आईडी के लिए एक ऑटो-इंक तकनीक का उपयोग किया था जो यूआरएल में दिखाए गए थे, और उनके लिए जो केवल अजाक्स थे, मैंने ObjectId
का उपयोग किया था एस। मैं वास्तव में चाहता था कि कुछ यूआरएल आसानी से "टाइप किए गए" हों। ObjectId
. का कोई रूप नहीं अंतिम उपयोगकर्ता द्वारा आसानी से टाइप किया जाता है। यह MongoDB की खूबियों में से एक है -- कि आप किसी भी _id
. का उपयोग कर सकते हैं प्रारूप आप चाहते हैं। :)पी>