2016-12-02 11 views
18

मैं एक गैर-आवेदनकारी अनुप्रयोग पर विकास शुरू कर रहा हूं जिसके लिए हम ग्राफQL पर विचार कर रहे हैं। हमारी स्कीमा के शुरुआती मसौदे पर काम करते समय, मैं नामकरण सम्मेलनों को स्थापित करने की कोशिश कर थोड़ा लकवा बन गया हूं जो उत्पाद परिपक्व होने के पैमाने पर स्केल करेगा।कुछ ग्राफिकल स्कीमा नामकरण सर्वोत्तम प्रथाओं क्या हैं?

  1. यह आम तौर पर उपयोगी/मुहावरेदार नाम पर नाम "इंटरफेस" रखने के लिए है: मैं वास्तव में, जो एक स्कीमा बढ़ने और में चलाने के लिए था या सफलतापूर्वक से परहेज किया है मृत समाप्त होता है या विसंगतियों किसी से कुछ जानकारी की सराहना करेंगे एक इंटरफ़ेस का? उदाहरण के लिए, Profile या ProfileInterface एक बड़े ऐप में बेहतर होगा?

    interface ProfileInterface { 
        # fields here... 
    } 
    
    type UserProfile implements ProfileInterface { 
        # implemented fields here... 
    } 
    
  2. क्या एकल-enum मानों को "स्थिरांक" के रूप में निर्दिष्ट करना आम है?

    enum GeoJSONFeatureTypeConstant { 
        feature 
    } 
    
    interface GeoJSONFeatureInterface { 
        id: ID 
        type: GeoJSONFeatureTypeConstant! 
        geometry: GeoJSONGeometryInterface! 
        properties: GeoJSONProperties 
    } 
    
  3. यह सब या कुछ भी नहीं scalar या type रूप object रों घोषित करने के लिए सबसे अच्छा अभ्यास है, और जहां लाइन दोनों के बीच तैयार की गई है? एक Point प्रकार की कल्पना करें जिसे आमतौर पर सरणी [x,y] के रूप में दर्शाया जाएगा; जो अधिक मूर्खतापूर्ण होगा?

    scalar Point 
    
    type Point { 
        x: Float 
        y: Float 
    } 
    
  4. किसी भी अन्य सर्वोत्तम प्रथाओं विशेष रूप से GraphQL में सम्मेलनों या प्रकार घोषणाओं है कि अनुभव के बिना पता करने के लिए मुश्किल होगा नामकरण से संबंधित।

अग्रिम धन्यवाद!


यह सवाल गति मैं इसे पसंद किया है | प्राप्त नहीं हुआ है, इसलिए मुझे लगता है मैं उन्हें खोजने के रूप में उपयोगी टुकड़े, जो एक तरह के एक जवाब में विकसित हो सकता है पोस्ट करने के लिए जा रहा हूँ।

अंत पर इनपुट के साथ इनपुट प्रकार का नामकरण एक उपयोगी सम्मेलन, है क्योंकि आप अक्सर दोनों एक इनपुट प्रकार और एक आउटपुट प्रकार है कि एक भी वैचारिक वस्तु के लिए थोड़े अलग हैं चाहते हैं।

http://graphql.org/graphql-js/mutations-and-input-types/

उत्तर

3

मैं ये वही सवालों के बारे में विचार किया और मुझे आशा है कि यह आप के लिए उपयोगी होगा।

1. मुझे विश्वास नहीं है कि प्रत्येक इंटरफ़ेस के अंत में इंटरफेस संलग्न करना मूर्खतापूर्ण है। इसके बजाय एक वर्णनात्मक नाम होना बेहतर है। Interfaces से संबंधित GraphQL Specification में दिए गए उदाहरण पर विचार करें। वे इंटरफ़ेस को उनके किसी भी प्रकार में शामिल नहीं करते हैं।

2. कई संबंधित मूल्य होने पर Enums केवल फायदेमंद होते हैं। मैं नहीं देखता कि केवल एक संभावित मूल्य होने पर प्रकार सहित उपयोगी कैसे होता है। एनम मूल्यों को एनम्स से संबंधित GraphQL Specification प्रति सभी कैप्स और अंडरस्कोर के साथ भी नामित किया गया है।

3. यदि आपने स्केलर प्रकार को लागू करने का निर्णय लिया है तो यह फ़ील्ड को सत्यापित करने के लिए आपके ऊपर निर्भर है। इस विशिष्ट मामले में, प्वाइंट को एक प्रकार के रूप में प्रदान करना सबसे अधिक समझ में आता है क्योंकि प्वाइंट 2-डी या 3-डी हो सकता है। इसे एक प्रकार के रूप में परिभाषित करना अधिक घोषणात्मक है।

दिनांक, ईमेल और यूआरएल जैसे मान स्केलर प्रकारों के लिए आम उदाहरण हैं। वे अर्थपूर्ण मूल्य प्रदान करते हैं और ग्राहकों को पता चलेगा कि इन क्षेत्रों से क्या उम्मीद करनी है।

कस्टम स्केलर के लिए प्रासंगिक section यहां है। यहां एक example है।

4. आपको ली बायरन सहायक द्वारा this आलेख मिलेगा।

+0

ये बहुत अच्छे हैं, और आपका लिंक सही है। धन्यवाद। –

संबंधित मुद्दे