अपने Django ऐप के लिए एक एपीआई को उजागर करने के लिए, आप एक दूसरे का उपयोग क्यों करेंगे?
अपने Django ऐप के लिए एक एपीआई को उजागर करने के लिए, आप एक दूसरे का उपयोग क्यों करेंगे?
जवाबों:
डीजेंगो-रेस्ट-फ्रेमवर्क के लेखक के रूप में, मुझे एक स्पष्ट पूर्वाग्रह मिल गया है;) लेकिन इस पर मेरी आशा-निष्पक्ष-निष्पक्ष राय कुछ इस प्रकार है:
किसी भी मामले में, दोनों अच्छे हैं। मैं शायद तस्सपेई का चरित्र-चित्रण करूँगा, क्योंकि आप बॉक्स से बाहर एक डिफॉल्ट का एक समझदार सेट दे रहे हैं, और REST फ्रेमवर्क बहुत अच्छी तरह से decoupled और लचीला होने के नाते। यदि आप एपीआई में बहुत समय निवेश करने की योजना बना रहे हैं, तो मैं आपको प्रत्येक के डॉक्स और कोडबेस के माध्यम से ब्राउज़ करने की सलाह दूंगा और यह महसूस करने की कोशिश करूंगा कि कौन सा सूट आपको अधिक सूट करता है।
जाहिर है, वहाँ भी 'क्यों टेस्टी?' इसमें खंड README, और 'REST फ्रेमवर्क 3' है। ।
डैनियल ग्रीनफेल्ड के ब्लॉग पोस्ट को भी देखें, जो Django के लिए एक एपीआई फ्रेमवर्क का चयन कर रहा हैमई 2012 से (वर्थ ध्यान दें कि यह अभी भी बड़े REST फ्रेमवर्क 2.0 रिलीज से कुछ महीने पहले था)।
दिसंबर 2013 और जुलाई 2013 से लोगों से यही सवाल पूछने वाले रेडिट पर कुछ सूत्र भी ।
दोनों अच्छे विकल्प हैं।
फ़िल्टर के लिए, टैस्टिपी अधिक शक्तिशाली आउट-ऑफ-द-बॉक्स है। यदि आपके पास एक मॉडल को उजागर करने वाला एक दृश्य है, तो आप Django- शैली की असमानता फ़िल्टर कर सकते हैं:
http://www.example.com/api/person?age__gt=30
या प्रश्न:
http://www.example.com/api/mymodel?language__in=en&language__in=fr
ये djangorestframework से संभव हैं, लेकिन आपको प्रत्येक मॉडल के लिए कस्टम फ़िल्टर लिखना होगा।
ट्रेसबैक के लिए, मैं django-rest- फ्रेमवर्क से अधिक प्रभावित हुआ हूं। Tastypie settings.ADMINS
जब अपवादों पर ईमेल करने की कोशिश करता है DEBUG = False
। जब DEBUG = True
, डिफ़ॉल्ट त्रुटि संदेश को JSON अनुक्रमित किया जाता है, जिसे पढ़ना कठिन है।
DjangoFilterBackend
REST फ्रेमवर्क द्वारा प्रलेखित के रूप में दिए गए उपयोग की आवश्यकता है: django-rest-framework.org/api-guide/filtering#api-guide
EDIT आउटडेटेड उत्तर, tastypie वास्तव में अब बनाए नहीं रखा गया है। अगर आपको REST करने के लिए कोई फ्रेमवर्क चुनना है तो Django REST फ्रेमवर्क का उपयोग करें।
उन दोनों के बीच वास्तविक अंतर के बारे में अवलोकन के लिए, आपको उनके प्रलेखन को पढ़ना चाहिए। वे कम या ज्यादा पूर्ण और काफी परिपक्व दोनों हैं।
मैं व्यक्तिगत रूप से हालांकि स्वाद लेने के लिए जाता हूं। इसे लगाना आसान लगने लगा है। यह उन्हीं लोगों से किया गया है जिन्होंने django-haystack का निर्माण किया जो भयानक है और django-package के अनुसार इसका उपयोग Django REST फ्रेमवर्क से अधिक किया जाता है।
यह ध्यान देने योग्य है कि चूंकि यह पहली बार पूछा गया था कि डीआरएफ ताकत से ताकत में चला गया है।
यह गितुब पर दोनों का अधिक सक्रिय है (दोनों ही तरह के कमिट, सितारे, कांटे और योगदानकर्ता)
DRF में OAuth 2 सपोर्ट और ब्राउनिंग API है।
मेरे लिए ईमानदारी से कि अंतिम विशेषता हत्यारा है। जब वे कुछ काम करते हैं और कहते हैं, '' यकीन नहीं होता है कि मेरे सभी फ्रंट-एंड devs को ब्राउज़ करने योग्य API पर इंगित किया जा सकता है; पता लगाना 'शानदार है।
कम से कम क्योंकि इसका मतलब है कि वे इसे अपनी शर्तों पर समझते हैं और जानते हैं कि एपीआई वास्तव में, निश्चित रूप से, बिल्कुल वही करता है जो 'दस्तावेज' कहता है। एपीआई के साथ एकीकरण की दुनिया में, यह तथ्य अकेले डीआरएफ को हरा देने की रूपरेखा बनाता है।
django-tastypie-swagger
इस अंतर को बंद करता है?
खैर, Tastypie और DRF दोनों बेहतरीन विकल्प हैं। आप बस दोनों में से किसी के साथ गलत नहीं कर सकते । (मैंने कभी पिस्टन पर काम नहीं किया है; और इसकी तरह का अब और अधिक चलन नहीं है। अब एक दिन ऐसा नहीं होगा / इस पर कोई टिप्पणी नहीं कर सकता। मेरी विनम्र राय में: चुनाव आपके (और आपकी तकनीकी टीम के) कौशल, ज्ञान और क्षमताओं पर होना चाहिए। इसके बजाय टेस्टीपी और डीआरएफ क्या प्रदान करता है, जब तक कि ऑफ-कोर्स आप क्वोरा, फेसबुक या गूगल की तरह कुछ बड़ा निर्माण नहीं कर रहे हैं।
व्यक्तिगत रूप से, मैंने उस समय TastyPie पर पहली बार काम करना शुरू किया जब मुझे django भी ठीक से नहीं जानता था। यह सब उस समय समझ में आया, केवल रीस्ट और एचटीटीपी को अच्छी तरह से जानते हुए भी, लेकिन django के बारे में लगभग कोई जानकारी नहीं है। क्योंकि मेरा एकमात्र उद्देश्य कुछ ही समय में RESTful APIs का निर्माण करना था जो कि मोबाइल उपकरणों में खपत किए जाने थे। इसलिए यदि आप ऐसे हैं जैसे 'मैं उस समय django-new-bie कहलाता हूं', तो TastyPie के बारे में अधिक न सोचें।
लेकिन अगर आपके पास कई साल हैं Django के साथ काम करने का का अनुभव है, तो यह उन्नत अवधारणाओं (जैसे क्लास बेस्ड व्यू, फॉर्म, मॉडल वैलिडेटर, क्वेरीसेट, मैनेजर और मॉडल इंस्टेंस और कैसे वे एक-दूसरे के साथ बातचीत करते हैं) का उपयोग करके अंदर और बाहर बहुत आरामदायक जानते हैं, * * DRF के लिए जाएं। ** DFR, डिंगैंगो के वर्ग आधारित विचारों पर आधारित है। DRF मुहावरेदार django है। इसकी तरह आप मॉडल फॉर्म, वैलिडेटर आदि लिख रहे हैं (खैर, मुहावरा django मुहावरेदार अजगर के पास नहीं है। यदि आप अजगर विशेषज्ञ हैं, लेकिन Django के साथ कोई अनुभव नहीं है, तो शायद आपको शुरू में मुहावरेदार django दर्शन में फिट होने के लिए मुश्किल हो सकता है। वह बात DRF भी)। DRF django की तरह ही बहुत सारे इनबिल्ट मैजिक मेथड के साथ आता है। यदि आप django जादुई तरीकों और दर्शन से प्यार करते हैं तो ** DRF ** आपके लिए है।
अब, केवल सटीक प्रश्न का उत्तर देने के लिए:
Tastypie:
लाभ:
नुकसान:
डीआरएफ:
नुकसान:
व्यक्तिगत रूप से मैं अपनी अगली परियोजना में क्या उपयोग करूंगा?
अब, मैं MAGIC और आउट-ऑफ-बॉक्स कार्यात्मकता का प्रशंसक नहीं हूं। क्योंकि वे सभी एक * महान लागत पर आते हैं। * यह मानते हुए कि मेरे पास परियोजना समय और बजट पर सभी विकल्प हैं और नियंत्रण है, मैं RESTLess ( https://github.com/toastdriven/restless ) जैसे कुछ हल्के वजन के साथ शुरू करूंगा (TastyPie के निर्माता और dango-haystack द्वारा बनाया गया) ( http: //haystacksearch.org/ ))। और इसी बात के लिए शायद / निश्चित रूप से फ्लास्क जैसे हल्के वेब ढांचे का चयन करें ।
पर क्यों? - अधिक पठनीय, सरल और प्रबंधनीय मुहावरेदार अजगर (उर्फ पायथोनिक) कोड। हालांकि अधिक कोड लेकिन अंततः महान लचीलापन और अनुकूलन प्रदान करते हैं।
क्या होगा अगर आपके पास केवल Django और TastyPie और DRF में से कोई विकल्प नहीं है?
फिर आपने पहले स्थान पर DRF / TastyPie को क्यों चुना?
मुझे उम्मीद है, यह आपको बेहतर निर्णय लेने में मदद करेगा।
अन्य सन्दर्भ - 1. द स्टेट ऑफ़ टास्टीपी ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. django-tastypie और djangoradframework में क्या अंतर हैं? ( Django-tastypie और djangorestframework के बीच क्या अंतर हैं? )
दोनों का उपयोग करने के बाद, एक बात जो मुझे Django रेस्ट फ्रैमवर्क के बारे में पसंद (पसंद) है वह यह है कि Django के साथ बहुत अनुरूप है।
मॉडल धारावाहिक लिखना लेखन मॉडल रूपों के समान है। जेनेरिक व्यूज में बनाया गया HTML के लिए Django के सामान्य विचारों के समान है।
Django-tastypie अब इसे मूल निर्माता द्वारा बनाए नहीं रखा गया है और उसने अपना खुद का एक नया लाइट वेट फ्रेमवर्क बनाया है।
वर्तमान में आपको django के साथ django-rest-Framework का उपयोग करना चाहिए यदि आप अपने API को उजागर करने के लिए तैयार हैं।
बड़े निगम इसका उपयोग कर रहे हैं। django-rest-ढांचा django टीम का एक मुख्य सदस्य है और उसे django-rest-ढांचा बनाए रखने के लिए धन मिलता है।
django- रेस्ट-फ्रेमवर्क में भी कभी-कभी बढ़ते हुए 3 आरटीआई पैकेज होते हैं, जो आपकी परेशानी के साथ आपके एपीआई के अधिक आसानी से निर्माण में मदद करेंगे।
ड्रफ का कुछ हिस्सा उचित रूप से django में विलय कर दिया जाएगा।
drf अधिक बेहतर पैटर्न और उपकरण प्रदान करता है फिर django-tastypie।
संक्षेप में यह अच्छी तरह से डिज़ाइन किया गया है, अच्छी तरह से बनाए रखा गया है, वित्त पोषित है, विशाल 3 पार्टी ऐप्स प्रदान करता है, बड़े संगठनों द्वारा भरोसा किया जाता है, आसान और कम बॉयलरप्लेट आदि।