में एनम पैराम पास करने के लिए सर्वश्रेष्ठ अभ्यास मेरे पास एक शानदार वेब एपीआई प्रोजेक्ट है, और मेरे पास 2 अलग-अलग एनम परिदृश्य हैं जिन्हें मैं सबसे अच्छा अभ्यास करने के बारे में अनिश्चित हूं।वेब एपीआई
परिदृश्य 1: सरल Enum परम
मेरे API पद्धति एक पैरामीटर ruleType
कहा जाता है, मान्य मान EmailAddress
और IPAddress
होने के साथ की आवश्यकता है। वेब एपीआई परियोजना के भीतर मेरे enum इस तरह दिखता है:
public enum RuleType
{
None = 0,
EmailAddress = 1,
IPAddress = 2
}
इस परिदृश्य के लिए मेरा प्रश्न है, मैं एपीआई के लिए अपने अनुरोध में ?ruleType=EmailAddress
का उपयोग करना चाहिए (जो स्वत: एपीआई विधि के भीतर मेरी RuleType
संपत्ति के लिए है कि मूल्य बांधता)? यदि हां, तो RuleType
परमिट को सत्यापित करने के लिए सबसे अच्छा तरीका कितना सर्वोत्तम है, क्या वैध नियम टाइप एनम मान है?
परिदृश्य 2: एक एकल परम
मेरे API पद्धति के लिए एकाधिक Enum मान एक वैकल्पिक fields
परम जो है आपके पास कोई अतिरिक्त डेटा है कि वापस आ जाना चाहिए निर्दिष्ट करने के लिए अनुमति देता है,। जैसे &fields=ruleOwner,rule
। यह प्रतिक्रिया में डेटा के उन 2 अतिरिक्त बिट्स वापस करेगा।
मैं वेब एपीआई परियोजना है जो प्रत्येक संभव field
कि अनुरोध किया जा सकता से संबंधित है में एक enum है, और वर्तमान में, मैं अल्पविराम से अलग क्षेत्रों परम बंटवारे रहा है, तो उस enum के प्रत्येक स्ट्रिंग प्रतिनिधित्व के माध्यम से पाशन, के लिए यह पार्स करने समकक्ष enum, जिसके परिणामस्वरूप Enum मानों की एक सूची है जिसके बाद मैं प्रासंगिक डेटा पुनर्प्राप्त करने के लिए अपने एपीआई के भीतर उपयोग कर सकते हैं।
public enum OptionalField
{
None = 0,
RuleOwner = 1,
Rule = 2,
etc.
}
क्या सबसे अच्छा अभ्यास यहाँ होगा:
यह Enum है? मैं bitwise enums में देख रहा था, इसलिए एपीआई अनुरोध में एक ही मूल्य भेजा गया जिसके परिणामस्वरूप fields
का कोई संयोजन हुआ लेकिन यह नहीं पता था कि यह वेब एपीआई के साथ अच्छा काम करेगा या नहीं, या इसके बारे में जाने का आमतौर पर बेहतर तरीका है ?
संख्याओं के बजाय स्ट्रिंग का उपयोग करने का एक अच्छा कारण है, हालांकि: संख्याएं आंतरिक कार्यान्वयन विवरण हैं, जबकि एपीआई एप्लिकेशन के लिए सार्वजनिक फ्रंट-एंड है। सदस्यों को 'enum' में पुन: व्यवस्थित करने के वैध कारण हैं, लेकिन डिफ़ॉल्ट रूप से ऐसा करने से संख्यात्मक मान बदल जाएंगे - लेकिन नाम नहीं। आंतरिक रूप से कोड के लिए, संख्यात्मक मानों में कोई फर्क नहीं पड़ता है, क्योंकि सब कुछ समान 'enum' परिभाषा का संदर्भ देता है। बाहरी कॉलर्स को वह लाभ नहीं मिलता है, और सर्विस कोड के अपडेट में निरंतरता सुनिश्चित करने के लिए स्ट्रिंग फॉर्म का उपयोग करना चाहिए। –
हां, लेकिन यदि आप स्ट्रिंग का उपयोग करते हैं तो आप आसानी से समग्र मान ([ध्वज]) भेजने की क्षमता खो देते हैं। ऑर्डरिंग समस्या मैन्युअल रूप से पूर्णांक सेट करके तय की जा सकती है। –