NgResource पर रेस्टैंगुलर का उपयोग करने का क्या फायदा है?


133

ngResourceपहले से ही चीजों को लागू करने के लिए वास्तव में सरल लगता है ...

NgResource पर पुनर्स्थापना का उपयोग करने के फायदे / नुकसान क्या हैं ?

1.1.3 $resourceवादे वापस करेगा और नवीनतम पीआर कमिट का उपयोग करके इसे आरोपित किया जा सकता है । क्या भविष्य के समर्थन $resourceको अतिरिक्त क्रियाओं का समर्थन करने की पेशकश की जाएगी जो रेस्टेंगुलर करती है? और अगर ऐसा होता है तो रेस्टैंगुलर ऐसा लगता है कि यह गायब हो जाएगा और बेमतलब हो जाएगा।


41
बंद क्यों? यह एक वैध प्रश्न है जिसका निश्चित उत्तर होना चाहिए। खेल में विशेष रूप से इतनी जल्दी जब आप यह तय करने की कोशिश कर रहे हैं कि आपकी सेवा कॉल के लिए क्या उपयोग किया जाए। तीन महीने में क्या होता है जब यह आदमी रेस्टैंगुलर के लिए समर्थन छोड़ देता है क्योंकि Google के ngResource ने उन सभी विशेषताओं को पकड़ा है जो यह गायब थी। फिर अगर बड़े $httpरिलीज में बदलाव कोणीयता के लिए किया जाता है --- तो आप अपग्रेड करने में सक्षम नहीं होंगे क्योंकि रेस्टैंगुएलर की सेवा कॉल "कुछ और" की उम्मीद कर रही होगी और आप इस ढांचे को समाप्त करने जा रहे हैं जिसे आपने "साथ जाने का फैसला किया"।
डैन कान्जे

1
उन्हें यहाँ देखें github.com/mganto/restangular/blob/master/…
mgonto

@DanKanze: मध्य-स्तरीय SO उपयोगकर्ता इस तरह के सवालों से करीब-करीब खुश हैं। यह वास्तव में निराशाजनक है क्योंकि आप निश्चित रूप से "जो बेहतर है" नहीं पूछ रहे हैं ... मेरा एकमात्र सुझाव भविष्य में सावधानीपूर्वक प्रश्नों को वाक्यांश बनाना होगा ताकि "सब्जेक्टिव गैस्टापो" को लुभाने के लिए आपको उनकी पूरी ताकत पर उतरना न पड़े।
19-05 को

जवाबों:


232

मैं रेस्टेंगुलर का निर्माता हूं।

मैंने README पर $ संसाधन के खिलाफ अंतर के साथ एक खंड बनाया है। आप यहाँ उन्हें बाहर की जाँच कर सकते https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource

वैसे भी, एक योग के रूप में, अतिरिक्त सुविधाओं और वादा आधारित दृष्टिकोण के अलावा, विचार यह है कि रेस्टैंगुलर आपके सभी यूआरएल को भी संभाल सकता है, ताकि आपको उनके बारे में कुछ भी पता न हो।

मान लीजिए कि आपके पास कारों के लिए कुछ ऐसा है: / उपयोगकर्ता / 123 / कारें / 456

$ संसाधन में, आपको उस URL को मैन्युअल रूप से बनाना होगा और आपको इसके लिए $ संसाधन ऑब्जेक्ट का निर्माण भी करना होगा। पुनर्स्थापना आपको URL को "याद रखने" द्वारा इसमें मदद करती है।

तो अगर आप किसी जगह पर करते हैं

Restangular.one("users", 123).get().then(function(user) {
  $scope.user = user;
});

// Some other code

//Automatically does the request to /users/123/cars as it remembers in which object you're asking it.
$scope.user.getList('cars')

उम्मीद है की यह मदद करेगा!


45
इस पर कूदने के लिए +1। फिर कौन समझाए कि उस आदमी ने इसे खुद बनाया है!
दान कंज

27
.one('users', 123)आपके URL के बारे में कोई अधिक या कम "जानने वाला" कैसे है '/users/123'? (सिर्फ शैतान का वकील खेलना) ऐसा लगता है कि जैसे '/foo/123/bar/123'बहुत आसान है .one('foo', 123).one('bar', 123)
बेन लेश

5
विचार यह है कि किसी बिंदु पर, आप बस इकाई का नाम और आईडी जानते हैं। इसलिए आप पहले कुछ झूठ बोलें var user = Restangular.one('users', 123).getList()। बाद में कोड में या किसी अन्य नियंत्रक में, आप करते हैं user.getList('buildings')। यहां, आप केवल अगले प्रकार को जानते हैं जो इमारतें हैं, लेकिन यह पूछताछ करता है /users/123/buildings/, इसलिए आपको पूरे समय पूरे URL को जानने की ज़रूरत नहीं है
mganto

3
अच्छा है लेकिन एकतरफा है। रेस्टैंगुलर के संभावित "अप्रासंगिकता" को इस थ्रेड में हाल के एन्हांसमेंट के संबंध में सुझाव दिया गया है $resource- मुझे नहीं लगता कि यह किसी भी तरह से अप्रासंगिक हो जाएगा, बस इसका उल्लेख किया गया है। किसी भी तथ्यात्मक नुकसान या भगदड़ से हमें अवगत होना चाहिए?
आपका

3
ऐसा कुछ नहीं है जो उस README में है जो ngresource के अधिक वर्तमान संस्करण के साथ पुराना है? (यानी वादों का उपयोग, ट्रांसफॉर्मेशन के माध्यम से रिस्पांस ऑब्जेक्ट को सजाने)
सूर्यास्त

8

मुझे अनुरोध करने से पहले ऑब्जेक्ट से कुछ फ़ील्ड्स निकालने के लिए रेस्टैंगुलर का RequestInterceptor काफी काम आया। वर्तमान में अधिकांश आरईएस वेबसर्ब्स मैं पीयूटी अनुरोध में ऑब्जेक्ट डेटा में आईडी की अपेक्षा नहीं करता हूं, उदाहरण के लिए, केवल यूआरएल में। आम तौर पर वे अतिरिक्त डेटा फ़ील्ड की उम्मीद नहीं करते हैं जिन्हें PUT द्वारा अपडेट नहीं किया जा सकता है (जैसे आईडी, या एक स्लग जो शीर्षक सेट करके उत्पन्न होता है)। मैंने पाया कि रेस्टैंगुलर के साथ यह सीधा है, जबकि मुझे पता नहीं है कि इसे $ संसाधन के साथ स्वच्छ तरीके से कैसे करना है, लेकिन मुझे यकीन है कि यह किसी भी तरह संभव है।

जाहिर है एक भी उन अतिरिक्त क्षेत्रों की अनदेखी करने के लिए webservice बदल सकता है, लेकिन यह हमेशा संभव नहीं है।


3

ngResource नवीनतम स्थिर रिलीज़ (वर्तमान में 1.0.6) में वादे वापस नहीं करता है। इसके अतिरिक्त, ऐसा लगता है कि Restangular ngResource की तुलना में अधिक क्रियाओं को उजागर करता है (यह PUT, OPTIONS, PATCH, आदि को उजागर करता है)।

यदि आपको अतिरिक्त क्रियाओं की आवश्यकता नहीं है और AngularJS (जिसमें ngResource के वादे शामिल हैं) की अस्थिर शाखा पर हैं, तो मुझे ngResource पर Restangular का उपयोग करने का कोई बड़ा कारण नहीं दिखाई देता है।

जो भी आपको सहज लगे, उसका उपयोग करें।


2
1.1.3 $resourceवादे वापस करेंगे और नवीनतम पीआर कमेटी का उपयोग करके प्रत्यारोपित किया जा सकता है। stackoverflow.com/questions/16429832/… क्या भविष्य में $resourceअतिरिक्त क्रियाओं का समर्थन करने की पेशकश की जाएगी ? और अगर ऐसा होता है तो रेस्टैंगुलर ऐसा लगता है कि यह गायब हो जाएगा और बेमतलब हो जाएगा।
डैन कान्जे

@DanKanze मैं अतिरिक्त क्रियाओं के भविष्य के समर्थन के बारे में निश्चित नहीं हूं। अधिकांश उपयोग के मामलों के लिए, अतिरिक्त क्रियाएं आवश्यक नहीं हैं, इसलिए मुझे उम्मीद नहीं है कि जल्द ही किसी भी समय बनाया जाएगा, लेकिन इसका मतलब यह नहीं है कि ऐसा नहीं होगा।
rtcherry

2
@DanKanze - मुझे संदेह है कि यह अप्रासंगिक हो जाएगा। रेस्टेंगुलर नेस्टेड-रिसोर्सेज के लिए बहुत बेहतर सपोर्ट प्रदान करता है, जो कुछ डेवलपर्स के लिए एक आवश्यकता है। कुछ ऐसा जो कि Ng-resource विशेष रूप से अच्छी तरह से समर्थन नहीं करता है। इसके अलावा, एनजी-संसाधन भी रेस्टफुल सम्मेलनों का पालन नहीं करता है, मैंने अपने ब्लॉग पर कुछ कहा है।
Oddman

@ नेडस्टैंड रिसोर्स मेट के बारे में अच्छा संकेत, विशेष रूप से रेल बैकेंड्स के लिए उपयोगी।
ardochhigh

1

उपरोक्त उत्तर तक और नए पाठकों के लिए, मेरे जैसे, उन विचारों में रुचि रखते हैं:

"और अगर ऐसा होता है तो रेस्टैंगुलर ऐसा लगता है कि यह गायब हो जाएगा और बेमतलब हो जाएगा।"

"जब यह आदमी रेस्टैंगुलर के लिए समर्थन छोड़ देता है तो तीन महीने में क्या होता है क्योंकि Google के ngResource ने उन सभी विशेषताओं को पकड़ा था जो यह गायब थी।"

  • [ 2 साल पहले पूछा गया ]

मेरी राय में एक ओपन-सोर्स लाइब्रेरी के जीवित रहने की एकमात्र गारंटी इसके आसपास निर्मित समुदाय है। एक सबसे अच्छा उदाहरण होगा mariaDB और WebScaleSQL जो दोनों महान रिलेशनल डेटाबेस मैनेजमेंट सिस्टम MySQL के लिए बढ़ते हुए कांटे के रूप में पैदा हुए थे।

इस लेखन के समय में रेस्टैन्गुलर having 6699 stars and 727 forksअब रेस्टैंगुलर 2.0 के लिए आगे बढ़ रहा है, जो कोणीयजे 2.0 और ईएस 6 का समर्थन करने के लिए है।


0

त्वरित सरल वेबसाइट के लिए जिसे आप न्यूनतम समर्थन के साथ हमेशा के लिए चलाना चाहते हैं मैं अंतर्निहित कोणीय http HttpClient का उपयोग करेगा जब भी मैं एक परियोजना पर काम कर रहा हूं जिसे मैं प्यार करता हूं और मैं आनंद ले रहा हूं और सभी शांत प्रौद्योगिकियों का उपयोग करने की कोशिश कर रहा हूं मैं Ngx-Restangular का उपयोग करूँगा

इसके अलावा, आपको पता होना चाहिए कि नाम के सुझाव के अनुसार रेस्टफुल सेवाओं के साथ ngx-restangular काम। तो SOAP प्रदान करने वाली सेवाओं के लिए आप Ngx-Restangular का उपयोग नहीं कर पाएंगे

https://ngx-restangular.com/

कहा जा रहा है कि मैं ज्यादातर समय ngx-restangular का उपयोग करता हूं क्योंकि मैं हमेशा प्रोजेक्ट पर काम करने की कोशिश करता हूं जो मुझे अच्छा लगता है और जो मुझे लगता है कि सबसे अच्छा है उसे लागू करने का प्रयास करें।

शुभकामनाएँ!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.