回答:
django-rest-frameworkの作者として、私は明らかな偏見を持っています;)しかし、これについての私のうまくいけば客観的な意見は次のようなものです:
いずれにしても、どちらも良いです。おそらく、Tastypieはすぐに使えるデフォルトの賢明なセットを提供し、RESTフレームワークは非常にうまく分離されて柔軟であることを特徴としています。APIに多くの時間を費やすことを計画している場合は、それぞれのドキュメントとコードベースを参照して、自分に合った感覚を得ることをお勧めします。
もちろん、「なぜTastyPieなのか」もあります。そのセクションはREADMEであり、「RESTフレームワーク3」です。
2012年5月からのDjangoのAPIフレームワークの選択に関するDaniel Greenfeldのブログ投稿も参照してください(これは、大きなRESTフレームワーク2.0がリリースされる数か月前のことです)。
どちらも良い選択です。
フィルターの場合、tastypieは標準でより強力です。モデルを公開するビューがある場合は、Djangoスタイルの不等式フィルターを実行できます。
http://www.example.com/api/person?age__gt=30
またはORクエリ:
http://www.example.com/api/mymodel?language__in=en&language__in=fr
これらはdjangorestframeworkで可能ですが、モデルごとにカスタムフィルターを作成する必要があります。
トレースバックについては、django-rest-frameworkに感銘を受けました。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-packagesによれば、Django RESTフレームワークよりも多く使用されています。
これは最初に尋ねられて以来、DRFは強さから強さへと進んだことは注目に値します。
github上の2つの中でよりアクティブです(コミット、スター、フォーク、コントリビューターに関して)
DRFはOAuth 2のサポートとブラウズ可能なAPIを備えています。
正直なところ、最後の機能はキラーです。すべてのフロントエンドの開発者が、何かがどのように機能するかわからない場合に、参照可能なAPIを指すようにして、「Go play; 見つける」は素晴らしいです。
それは、彼らが自分の言葉でそれを理解し、APIが「ドキュメント」に書かれていることを本当に確実に確実に実行することを知っていることを意味するからです。APIとの統合の世界では、その事実だけでDRFが優れたフレームワークになります。
django-tastypie-swagger
このギャップを縮めるかしら?
まあ、TastypieとDRFはどちらも優れた選択肢です。あなたはそれらのどちらかで間違って行くことはできません。(私はこれまでピストンに取り組んだことがありません。そして、今日はそのような傾向がなくなっているので、コメントしない/コメントできません。私の謙虚な意見では、選択はあなた(そしてあなたの技術チーム)のスキル、知識、能力に基づいて行われるべきです。TastyPieとDRFが提供するものではなく、オフコースでない限り、Quora、Facebook、Googleなどの非常に大きなものを構築します。
個人的に、私はジャンゴさえ適切に知らなかった時に、最初にTastyPieでの作業を始めました。当時は、RESTとHTTPを非常によく知っているだけで、djangoに関する知識がほとんどないか、ほとんどありませんでした。私の唯一の意図は、モバイルデバイスで使用されるRESTful APIをすぐに作成することでした。したがって、「私がたまたまdjango-new-bieと呼ばれている」のような場合は、TastyPieをこれ以上使用しないでください。
しかし、Djangoでの作業に長年の経験がある場合、高度な概念(クラスベースのビュー、フォーム、モデルバリデーター、クエリセット、マネージャー、モデルインスタンス、およびそれらすべてが互いにどのように相互作用するかなど)を使用して、Djangoを完全に理解し、非常に快適です。* * DRFに進みます。** DFRは、djangoのクラスベースのビューに基づいています。DRFは慣用的なdjangoです。モデルのフォームやバリデーターなどを書いているようなものです(まあ、慣用的なdjangoは慣用的なpythonに近いところはありません。Pythonの専門家でDjangoの経験がない場合は、最初に慣用的なdjangoの哲学に慣れるのに苦労するかもしれません。 DRFも同様です)。DRFには、djangoと同様に、多くの組み込みのマジックメソッドが付属しています。あなたがジャンゴの魔法の方法と哲学を愛しているなら** DRF **はあなたのためだけです。
今、ちょうど正確な質問に答えるために:
Tastypie:
利点:
短所:
DRF:
短所:
個人的には、次のプロジェクトで何を使用しますか?
今では、MAGICやすぐに使える機能のファンではなくなりました。すべてが*大きなコストで提供されるためです。*プロジェクトの時間と予算をすべて選択して制御できると想定すると、RESTLess(https://github.com/toastdriven/restless)(TastyPieとdjango-haystackの作成者が作成したhttp(http: //haystacksearch.org/))。同じ問題については、おそらく/確実に、Flaskのような軽量のWebフレームワークを選択してください。
しかし、なぜ?-より読みやすく、シンプルで管理しやすい慣用的なpython(別名pythonic)コード。コードは増えますが、最終的には優れた柔軟性とカスタマイズが提供されます。
DjangoとTastyPieとDRFのどちらか1つしか選択できない場合はどうなりますか?
では、なぜ最初にDRF / TastyPieを選択したのですか?
私はそれがあなたがより良い決断をするのを助けることを願っています。
その他の参考資料 -1. Tastypieの状態(http://toastdriven.com/blog/2014/may/23/state-tastypie/)2 . django-tastypieとdjangorestframeworkの違いは何ですか?(django-tastypieとdjangorestframeworkの違いは何ですか?)
両方を使用したことで、Django Rest Framworkについて私が(推奨)気に入ったことの1つは、Djangoと非常に一貫していることです。
モデルシリアライザーの作成は、モデルフォームの作成と非常に似ています。組み込みのジェネリックビューは、DjangoのHTMLのジェネリックビューとよく似ています。
Django-tastypieは、元の作成者によって管理されなくなったため、独自の軽量フレームワークを新たに作成しました。
現在、APIを公開する場合は、django-rest-frameworkとdjangoを併用する必要があります。
大企業はそれを使用しています。django-rest-frameworkはdjangoチームのコアメンバーであり、django-rest-frameworkを維持するための資金を得ています。
django-rest-frameworkには、増え続ける3番目のアーティパッケージも多数あります。これにより、手間のかからないAPIをより簡単に構築できます。
drfの一部もdjango本体にマージされます。
drfは、django-tastypieよりも優れたパターンとツールを提供します。
一言で言えば、それはよく設計され、よく維持され、資金があり、巨大なサードパーティアプリを提供し、大規模な組織から信頼されており、おいしいよりも簡単で定型的ではありません。