Neden Django uygulamanız için bir API göstermek için birini diğerinden daha iyi kullanıyorsunuz?
Neden Django uygulamanız için bir API göstermek için birini diğerinden daha iyi kullanıyorsunuz?
Yanıtlar:
Django-rest-framework'ün yazarı olarak, bariz bir önyargı var;) ama umarım bu konuda oldukça objektif bir fikrim var:
Her durumda, her ikisi de iyidir. Muhtemelen Tastypie'yi size kutudan makul bir dizi varsayılan değer ve REST çerçevesini çok güzel bir şekilde ayrıştırılmış ve esnek olarak nitelendiririm. API'ya çok fazla yatırım yapmayı planlıyorsanız, her biri için dokümanlara ve kod tabanına göz atmayı ve size daha uygun olanı hissetmeye çalışmayı öneririm.
Açıkçası, 'Neden TastyPie?' bölümünde README ve "REST framework 3" .
Ayrıca Mayıs 2012'den itibaren Daniel Greenfeld'in Django için bir API çerçevesi seçme hakkındaki blog yazısı (Bunun büyük REST framework 2.0 sürümünden birkaç ay önce olduğunu belirtmek gerekir).
Ayrıca Aralık 2013 ve Temmuz 2013'ten aynı soruyu soran insanlarla Reddit'te birkaç konu .
Her ikisi de iyi seçimlerdir.
Filtreler için tastypie kutudan daha güçlüdür. Bir modeli ortaya koyan bir görünümünüz varsa, Django tarzı eşitsizlik filtreleri yapabilirsiniz:
http://www.example.com/api/person?age__gt=30
veya VEYA sorguları:
http://www.example.com/api/mymodel?language__in=en&language__in=fr
bunlar djangorestframework ile mümkündür, ancak her model için özel filtreler yazmanız gerekir.
Geri izlemeler için django-rest-framework'ten daha çok etkilendim. Tastypie settings.ADMINS
, istisnalar olduğunda e-posta göndermeye çalışır DEBUG = False
. Ne zaman DEBUG = True
, varsayılan hata mesajı JSON seri hale okumak zordur.
DjangoFilterBackend
REST çerçevesi tarafından belgelendiği gibi kullanmanız gerekir : django-rest-framework.org/api-guide/filtering#api-guide
DÜZENLEME Eski cevap, tastypie artık gerçekten korunmaz. REST yapmak için bir çerçeve seçmeniz gerekiyorsa Django REST çerçevesini kullanın.
Her ikisi arasındaki gerçek farklar hakkında genel bir bilgi için belgelerini okumalısınız. Her ikisi de az çok tam ve oldukça olgun.
Ben şahsen olsa tastypie eğilimindedir. Kurulumu daha kolay görünüyor. Harika olan django-haystack'i yaratan aynı kişilerden yapılır ve django paketlerine göre Django REST çerçevesinden daha fazla kullanılır.
Bu ilk sorulduğu için DRF'nin güçlenerek güçlendiğini belirtmek gerekir.
Github'daki ikisinden daha aktif (hem taahhütler, yıldızlar, çatallar ve katkıda bulunanlar açısından)
DRF'nin OAuth 2 desteği ve göz atılabilir API'sı vardır.
Dürüst olmak gerekirse, bu son özellik katil. Bir şeyin nasıl çalıştığından emin olmadığında ve 'Go play; öğrenmek 'harika.
En önemlisi, bunu kendi terimleriyle anlamaları ve API'nin gerçekten, kesinlikle, 'belgelerin' söylediklerini kesinlikle yaptığını bilmeleri anlamına gelir. API'lerle entegrasyon dünyasında, bu gerçek tek başına DRF'yi yenmek için bir çerçeve yapar.
django-tastypie-swagger
bu boşluğu kapatıyor mu?
Tastypie ve DRF'nin ikisi de mükemmel seçimlerdir. İkisiyle de yanlış gidemezsiniz. (Ben Piston üzerinde hiç çalışmadım; ve artık bir gün trend değil, bu yüzden bu konuda yorum yapamayacak / yapamayacak. Verildi. Benim düşünceme göre: Sizin (ve teknik ekibinizin) becerileri, bilgisi ve yetenekleri konusunda seçim yapılmalıdır. TastyPie ve DRF'nin sunduklarından ziyade, tabii ki Quora, Facebook veya Google gibi gerçekten büyük bir şey inşa etmiyorsanız.
Şahsen, django'yu düzgün bilmediğim bir zamanda ilk olarak TastyPie üzerinde çalışmaya başladım. Her şey o zaman mantıklıydı, sadece REST ve HTTP'yi çok iyi biliyordu, ancak django hakkında neredeyse hiç veya çok az bilgiye sahipti. Çünkü tek amacım RESTful API'leri mobil cihazlarda tüketilecek hiçbir zaman oluşturmak değildi. Eğer 'Django-new-bie adlı o zamanlar olurum' gibiyseniz, daha fazla TastyPie için düşünmeyin.
Ama yılların varsa Django ile çalışmak dayanan deneyime gelişmiş kavramları (Sınıf Tabanlı Görünümler, Formlar, Model Doğrulayıcı, Sorgu Kümesi, Yönetici ve Model Örnekleri ve bunların birbirleriyle nasıl etkileşime girdiği gibi) kullanarak bunu içeride ve çok rahat bilir. * DRF için gidin. ** DFR, django'nun sınıf tabanlı görüşlerine dayanmaktadır. DRF deyimsel django. Model formları, doğrulayıcılar vb. Yazıyormuşsunuz gibi. (Peki, deyimsel django, deyimsel python'a yakın bir yer değildir. Python uzmanıysanız ancak Django ile deneyiminiz yoksa, başlangıçta idiyomatik django felsefesine ve DRF de önemlidir). DRF, django gibi birçok dahili sihirli yöntemle birlikte gelir. Eğer django büyülü yöntemleri ve felsefesini seviyorsanız ** DRF ** tam size göre.
Şimdi, tam soruyu cevaplamak için:
Tastypie:
Avantajları:
Dezavantajları:
DRF:
Dezavantajları:
Şahsen bir sonraki projemde ne kullanırım?
Artık MAGIC ve Kullanıma Hazır fonksiyonların hayranı değilim. Çünkü hepsi büyük bir maliyetle geliyor. * Proje süresi ve bütçesi üzerinde tüm seçeneklere ve kontrole sahip olduğumu varsayarsak, RESTLess ( https://github.com/toastdriven/restless ) gibi hafif bir şeyle başlayacağım (TastyPie ve django-haystack ( http: //haystacksearch.org/ )). Ve aynı konu için muhtemelen / kesinlikle Flask gibi hafif web çerçevesini seçin .
Ama neden? - Daha okunabilir, basit ve yönetilebilir deyimsel python (diğer adıyla pythonic) kodu. Daha fazla kod olmasına rağmen sonunda büyük esneklik ve özelleştirme sağlar.
Ya Django ve TastyPie ve DRF'den başka seçeneğiniz yoksa?
O zaman neden ilk etapta DRF / TastyPie'yi seçtiniz?
Umarım daha iyi karar vermene yardımcı olur.
Diğer referanslar - 1. Tastypie Eyaleti ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. django-tastypie ve djangorestframework arasındaki farklar nelerdir? ( Django-tastypie ve djangorestframework arasındaki farklar nelerdir? )
Her ikisini de kullandıktan sonra, Django Rest Framwork hakkında sevdiğim (tercih ettiğim) bir şey Django ile çok tutarlı olmasıdır.
Model serileştiricileri yazmak, model formları yazmaya çok benzer. Yerleşik Genel Görünümler, Django'nun HTML genel görünümlerine çok benzer.
Django-tastypie artık orijinal yaratıcısı tarafından korunmuyor ve kendi başına yeni bir hafif çerçeve oluşturdu.
Şu anda API'nızı ifşa etmek istiyorsanız django ile django-rest-framework kullanmalısınız.
Büyük şirketler bunu kullanıyor. django-rest-framework django ekibinin çekirdek bir üyesidir ve django-rest-framework'ü korumak için fon alır.
django-rest-framework ayrıca API'lerinizi daha az sorunla daha kolay oluşturmanıza yardımcı olacak çok sayıda büyüyen 3. gösterişli pakete de sahiptir.
Drf'nin bir kısmı da düzgün django'da birleştirilecek.
drf django-tastypie'den daha iyi desen ve araçlar sağlar.
Kısacası, iyi tasarlanmış, bakımlı, finanse edilmiş, büyük organizasyonlar tarafından güvenilen büyük 3. taraf uygulamaları, tastypie üzerinde daha kolay ve daha az ortak plaka vb.