2012-06-15 14 views
9

जैसा कि मैं रीस्टफुल एपीआई में अधिक मिलता हूं, दृष्टिकोण की (अच्छी) सादगी का मतलब है कि आप बहुत सारे बॉयलरप्लेट कोड उत्पन्न करते हैं, और कोड जो तीन या चार अलग-अलग स्थानों में मेल खाता है, उदाहरण के लिए एक जर्सी स्थित ढेर के लिए:क्या रीस्टफुल स्टैक के लिए बॉयलरप्लेट कोड उत्पन्न करने का कोई तरीका है?

वेब पेज जो नियंत्रण प्रदान करता है (एक बटन Create Foo) वेब पृष्ठ पर फू बनाने के लिए JSON और अनुरोध निरूपण पर
  • जे एस पर
    1. एचटीएमएल
    2. एक FooRest वर्ग विधि अनुरोध को पूरा करने और एक फू
    3. एक Foo वर्ग का दृष्टांत है, जो डेटा संरचना में हेरफेर होगा बनाने

    वहाँ उपकरण है जो prov रहे हैं करने के लिए इस कोड के कुछ या सभी के लिए स्वचालित रूप से एक शुरुआती बिंदु मानते हैं, संभवतः जेएसओएन डेटा संरचना की तरह कुछ सरल से शुरू करना? जैसे, प्रदान करते हैं:

    card: { 
        methods: [GET], 
    } 
    handOfCards: { 
        methods: [GET POST PUT DELETE], 
    } 
    

    और बहुत कम से कम अजाक्स अनुरोध, निर्दिष्ट तरीकों के साथ CardRest और HandOfCardsRest वर्गों के साथ अंत बाहर टोंटदार, और कार्ड और गुण या getters/setters साथ HandOfCards वर्गों?

  • +0

    मुझे उम्मीद है कि यह एक अच्छा जवाब हो जाएगा। मैं बिल्कुल इसका इस्तेमाल कर सकता था! –

    +0

    @ डब्ल्यू। गोमेन, फिर इसे अधिक दृश्यता देने के लिए उत्तर साझा करने के लिए सबसे अच्छा ... ऐसा लगता है कि विचारों को रोक दिया गया है। –

    उत्तर

    1

    मैं लगभग किसी भी * रेल आवेदन यह सब करता है के लिए लगता है: अपनी वेबसाइट का हवाला देते हुए आप। Grails अभी मेरा पसंदीदा है, और एक बार जब आप प्रारंभिक सेटअप (एक ही कमांड) प्राप्त करते हैं तो आप डोमेन कमांड को किसी अन्य कमांड के साथ बनाते हैं।

    एक बार ये बनने के बाद, आप इन सभी कार्यों को एक ही कमांड के साथ संभालने के लिए दोनों दृश्य (एचटीएमएल) और नियंत्रक उत्पन्न कर सकते हैं, और बॉयलर प्लेट बहुत प्रारंभिक साइटों के लिए पर्याप्त है।यह आपके लिए टेस्ट केस भी बनाएगा, हालांकि आपको परिभाषित करना होगा कि वास्तविक परीक्षण क्या करते हैं। आप इसे आसानी से सम्मेलन द्वारा प्रोग्राम कर सकते हैं, या URL से अपने स्वयं के मैपिंग बना सकते हैं -> नियंत्रक क्रियाएं। इसमें प्लगइन का एक टन है और आसानी से फॉर्मों (जावास्क्रिप्ट के माध्यम से) में रिमोट सबमिशन को नियंत्रित करता है।

    यह सृजन के लिए जेसन डेटा संरचना नहीं लेता है, लेकिन डोमेन बहुत आसानी से बनाए जाते हैं (ग्रोवी का उपयोग करके) और यह autowires गेटर/सेटर्स, सेवा इंजेक्शन, आदि के रूप में यह वसंत फ्रेमवर्क पर आधारित है।

    +0

    मैं रेल से मुझे थोड़ा अधिक नियंत्रण चाहता था, लेकिन मुझे लगता है कि यह अभी भी सही उत्तर के करीब है। : - / –

    0

    आप शायद एक अलग दृष्टिकोण को आजमा सकते हैं और project lombok जैसे somethink को आजमा सकते हैं। यह कम से कम आपको अपने सभी गेटर्स और सेटर्स को निक्स करने देगा।

    +0

    यह एक शुरुआत है, हालांकि वास्तव में मेरा आईडीई स्वचालित रूप से गेटर्स/सेटर्स को सम्मिलित करता है। लेकिन यह सभी टिप्पणियां और विधियां हैं जो मुझे परेशान कर रही हैं। शायद मैं सिर्फ एक पर्ची लिपि लिखूंगा। ;) –

    +0

    यह वास्तव में प्रश्न का उत्तर नहीं देता है। आरईएसटी, जो भी हो, के साथ इसका बिल्कुल कुछ नहीं है। –

    3

    क्या आपने Backbone.js को आजमाया है? यह एक जावास्क्रिप्ट लाइब्रेरी है जो आपके लिए आरईएसटी अजाक्स अनुरोधों को संभालती है। यह आपको डेटा को लपेटने के लिए अपने मॉडल को परिभाषित करने और सेटर्स, गेटर्स, सेव और डिलीट इत्यादि प्रदान करता है।

    यह आपको यूआई एचटीएमएल उत्पन्न करने वाले विचारों के मॉडल को बाध्य करने की अनुमति देता है।

    +0

    हम्म, दिलचस्प। यह निश्चित रूप से आधा रास्ता है। वह प्लस एक छोटी सी पर्ची स्क्रिप्ट काम कर सकती है। ;) –

    +0

    मैंने वास्तव में पहले रीढ़ की हड्डी को नहीं देखा था, लेकिन ऐसा लगता है कि यह एक grails बैकएंड के लिए एक शानदार मोर्चा होगा, जिसका मैं नीचे अपने जवाब में उल्लेख करता हूं। – Mike

    1

    आपका लक्ष्य शायद बॉयलरप्लेट की कोड जनरेशन नहीं होना चाहिए बल्कि वास्तव में कम कोड लिखना चाहिए।

    SparkSinatra पर आधारित जावा माइक्रो वेब फ्रेमवर्क है।

    यहाँ कुछ उदाहरण कोड है:

    import static spark.Spark.*; 
    import spark.*; 
    
    public class HelloWorld { 
        public static void main(String[] args) { 
         get(new Route("/") { 
          @Override 
          public Object handle(Request request, Response response) { 
           // .. Show something .. 
          } 
         }); 
    
         post(new Route("/") { 
          @Override 
          public Object handle(Request request, Response response) { 
           // .. Create something .. 
          } 
         }); 
    
         put(new Route("/") { 
          @Override 
          public Object handle(Request request, Response response) { 
           // .. Update something .. 
          } 
         }); 
    
         delete(new Route("/") { 
          @Override 
          public Object handle(Request request, Response response) { 
           // .. annihilate something .. 
          } 
         }); 
    
         options(new Route("/") { 
          @Override 
          public Object handle(Request request, Response response) { 
           // .. appease something .. 
          } 
         }); 
        } 
    } 
    
    +0

    क्या आप मेरी समझ में मदद कर सकते हैं कि यह एक विश्वसनीय ढांचे के सामने और पीछे के सिरों को कैसे बनाने में मदद करता है? मुझे कुछ याद आ रहा है ... –

    +0

    यह पीछे की ओर थोड़ा सा सरल बनाता है। रेल आपकी तत्काल समस्या के लिए एक सरल और सीधा समाधान है (उदाहरण के लिए, 'रेल मचान उत्पन्न करते हैं), लेकिन आपने कहा कि आप वर्तमान में जर्सी का उपयोग कर रहे हैं इसलिए मैंने सोचा कि आप जावा-आधारित समाधान पसंद कर सकते हैं। जर्सी का उपयोग करने के बाद, मैं पूरी तरह से स्पार्क जैसे कुछ की सिफारिश करता हूं। –

    1

    एक वैकल्पिक (या इसके अलावा) Juan's answer के लिए, आप Knockback.js, जो नॉकआउट का सबसे अच्छा लगता है और Backbone.js का सबसे अच्छा कहते हैं की जाँच कर सकते हैं। बैकबोन को इसके "सिंक" कार्यों के माध्यम से रीस्टफुल एपीआई के लिए समर्थन है।

    Backbone.sync की विधि हस्ताक्षर सिंक (विधि, मॉडल, [विकल्प])

    method – the CRUD method ("create", "read", "update", or "delete") 
    model – the model to be saved (or collection to be read) 
    options – success and error callbacks, and all other jQuery request options 
    
    संबंधित मुद्दे

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