Mengapa Anda menggunakan yang satu di atas yang lain, untuk mengekspos API untuk aplikasi Django Anda?
Mengapa Anda menggunakan yang satu di atas yang lain, untuk mengekspos API untuk aplikasi Django Anda?
Jawaban:
Sebagai penulis django-rest-framework, saya memiliki bias yang jelas;) tetapi pendapat saya yang semoga cukup objektif tentang ini adalah sesuatu seperti:
Bagaimanapun, keduanya baik. Saya mungkin akan mencirikan Tastypie sebagai memberi Anda satu set default yang masuk akal di luar kotak, dan kerangka REST sebagai sangat baik dipisahkan dan fleksibel. Jika Anda berencana menginvestasikan banyak waktu di API, saya akan merekomendasikan untuk menelusuri dokumen & basis kode masing-masing dan mencoba untuk merasakan yang lebih cocok untuk Anda.
Jelas, ada juga 'Why TastyPie?' bagian dalam README itu, dan 'REST framework 3' .
Lihat juga posting blog Daniel Greenfeld tentang Memilih kerangka kerja API untuk Django , mulai Mei 2012 (Perlu dicatat bahwa ini masih beberapa bulan sebelum rilis REST framework 2.0 yang besar).
Juga beberapa utas tentang Reddit dengan orang-orang yang menanyakan pertanyaan yang sama ini, mulai Desember 2013 dan Juli 2013 .
Keduanya adalah pilihan yang baik.
Untuk filter, tastypie lebih kuat di luar kotak. Jika Anda memiliki tampilan yang mengekspos model, Anda dapat melakukan filter ketidaksetaraan gaya Django:
http://www.example.com/api/person?age__gt=30
atau ATAU pertanyaan:
http://www.example.com/api/mymodel?language__in=en&language__in=fr
ini dimungkinkan dengan djangorestframework, tetapi Anda harus menulis filter khusus untuk setiap model.
Untuk traceback, saya lebih terkesan dengan django-rest-framework. Tastypie mencoba mengirim email settings.ADMINS
tentang pengecualian kapan DEBUG = False
. Ketika DEBUG = True
, pesan kesalahan default adalah serial JSON , yang lebih sulit dibaca.
DjangoFilterBackend
sebagaimana didokumentasikan oleh kerangka kerja REST di sini: django-rest-framework.org/api-guide/filtering#api-guide
EDIT Jawaban kedaluwarsa, tastypie tidak benar-benar dipertahankan lagi. Gunakan kerangka Django REST jika Anda harus memilih kerangka kerja untuk melakukan REST.
Untuk ikhtisar tentang perbedaan aktual antara keduanya, Anda harus membaca dokumentasinya. Keduanya kurang lebih lengkap dan cukup dewasa.
Tapi saya pribadi cenderung mencicipi. Tampaknya lebih mudah untuk mengaturnya. Ini dilakukan dari orang yang sama yang membuat django-haystack yang luar biasa dan menurut django-paket lebih banyak digunakan daripada Django REST framework.
Perlu dicatat bahwa sejak pertama kali ditanya, DRF telah berubah dari kekuatan ke kekuatan.
Ini lebih aktif dari keduanya di github (baik dari segi komit, bintang, garpu, dan kontributor)
DRF memiliki dukungan OAuth 2 dan API yang dapat dijelajahi.
Jujur bagiku fitur terakhir adalah si pembunuh. Mampu mengarahkan semua pengembang front-end saya di API yang dapat dijelajahi ketika mereka tidak yakin bagaimana sesuatu bekerja dan mengatakan 'Mainkan'; cari tahu 'fantastis.
Paling tidak karena itu berarti mereka dapat memahaminya dengan persyaratan mereka sendiri dan tahu bahwa API benar-benar, benar-benar melakukan apa yang dikatakan 'dokumentasi'. Dalam dunia integrasi dengan API, fakta itu sendiri membuat DRF kerangka untuk dikalahkan.
django-tastypie-swagger
menutup celah ini?
Nah, Tastypie dan DRF keduanya adalah pilihan yang sangat baik. Anda tidak bisa salah dengan keduanya. (Saya belum pernah bekerja di Piston; dan jenisnya tidak lagi tren sekarang hari jadi tidak akan / tidak bisa mengomentarinya. Diambil untuk Granted.). Menurut pendapat saya yang sederhana: Pilihan harus dibuat atas keterampilan, pengetahuan, dan kemampuan Anda (dan tim teknologi Anda). Daripada apa yang ditawarkan TastyPie dan DRF, kecuali tentunya Anda membangun sesuatu yang sangat besar seperti Quora, Facebook atau Google.
Secara pribadi, saya akhirnya mulai bekerja pada TastyPie pada saat saya bahkan tidak tahu django dengan benar. Semuanya masuk akal pada waktu itu, hanya mengetahui REST dan HTTP dengan sangat baik tetapi dengan hampir tidak ada atau sedikit pengetahuan tentang Django. Karena satu-satunya niat saya adalah untuk membangun API RESTful dalam waktu singkat yang dapat dikonsumsi di perangkat seluler. Jadi jika Anda seperti 'Saya kebetulan waktu itu bernama django-new-bie', Jangan berpikir lebih baik untuk TastyPie.
Tetapi jika Anda memiliki pengalaman bertahun- tahun bekerja dengan Django, ketahui secara mendalam dan sangat nyaman menggunakan konsep-konsep canggih (seperti Tampilan Berbasis Kelas, Formulir, Validator Model, QuerySet, Manajer dan Instans Model dan bagaimana semua mereka berinteraksi satu sama lain), * * pilih DRF. ** DFR didasarkan pada pandangan berbasis kelas Django. DRF adalah django idiomatik. Seperti Anda menulis formulir model, validator, dll. (Yah, django idiomatik tidak ada di dekat python idiomatik. Jika Anda adalah ahli python tetapi tidak memiliki pengalaman dengan Django maka Anda mungkin mengalami kesulitan awalnya masuk ke dalam filsafat django idiomatik dan untuk itu juga penting DRF). DRF hadir dengan banyak metode sihir bawaan seperti Django. Jika Anda menyukai metode dan filosofi magis Django ** DRF ** hanya untuk Anda.
Sekarang, hanya untuk menjawab pertanyaan yang tepat:
Tastypie:
Keuntungan:
Kekurangan:
DRF:
Kekurangan:
Secara pribadi apa yang akan saya gunakan dalam proyek berikutnya?
Sekarang, saya bukan lagi penggemar fungsi MAGIC dan Out-of-box. Karena semua itu datang dengan biaya besar. * Dengan asumsi saya memiliki semua pilihan dan kendali atas waktu dan anggaran proyek, saya akan mulai dengan sesuatu yang ringan seperti RESTLess ( https://github.com/toastdriven/restless ) (dibuat oleh pencipta TastyPie dan django-haystack ( http: //haystacksearch.org/ )). Dan untuk hal yang sama mungkin / pasti memilih kerangka kerja web yang ringan seperti Flask.
Tapi kenapa? - Lebih mudah dibaca, kode python idiomatik (alias pythonic) lebih mudah dibaca. Meskipun lebih banyak kode tetapi pada akhirnya memberikan fleksibilitas dan penyesuaian besar.
Bagaimana jika Anda tidak punya pilihan selain Django dan salah satu TastyPie dan DRF?
Lalu mengapa Anda memilih DRF / TastyPie di tempat pertama?
Saya harap, ini akan membantu Anda mengambil keputusan yang lebih baik.
Referensi lain - 1. Keadaan Tastypie ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. Apa perbedaan antara django-tastypie dan djangorestframework? ( Apa perbedaan antara django-tastypie dan djangorestframework? )
Setelah menggunakan keduanya, satu hal yang saya sukai (lebih disukai) tentang Django Rest Framwork adalah yang sangat konsisten dengan Django.
Penulisan serialisasi model sangat mirip dengan bentuk penulisan model. Tampilan generik bawaan sangat mirip dengan tampilan generik Django untuk HTML.
Django-tastypie tidak lagi dipelihara oleh pembuat aslinya dan ia menciptakan kerangka kerja ringan yang baru.
Saat ini Anda harus menggunakan django-rest-framework dengan django jika Anda ingin mengekspos API Anda.
Perusahaan besar menggunakannya. django-rest-framework adalah anggota inti dari tim Django dan dia mendapatkan dana untuk mempertahankan django-rest-framework.
django-rest-framework juga memiliki banyak paket arty 3rd yang terus berkembang yang akan membantu Anda membangun API Anda lebih mudah dengan lebih sedikit kerepotan.
Beberapa bagian dari drf juga akan digabung dalam Django.
drf memberikan pola dan alat yang lebih baik daripada Django-tastypie.
Singkatnya itu dirancang dengan baik, terawat dengan baik, didanai, menyediakan aplikasi pihak ke-3 yang besar, dipercaya oleh organisasi besar, lebih mudah dan lebih sedikit boilerplate dll di atas tastypie.