うまく機能するDjangoアプリケーションがあります。 RESTサービスを追加しています。私のREST戦略に関する追加の入力を探しています。
ここに私が手に持っているもののいくつかの例があります。
回答ごとに1つのアプローチを指定してください。そうすれば、賛成または反対の投票ができます。
JSONの結果を返すビュー関数をDjangoで書くだけにフォールバックすることを考えています。
RESTは、JSONの結果を意味するだけではありません。RESTは、本質的に、リソース指向のAPIをネイティブだが本格的なHTTPで公開することを意味します。私はRESTのエキスパートですが、Railsが行っていることのいくつかを以下に示します。
たとえば、ネイティブHTTPサポートを実行するには、サーバーは次のように応答する必要があります。
GET /account/profile HTTP/1.1
Host: example.com
Accept: application/json
それが応答するように
GET /account/profile.json HTTP/1.1
Host: example.com
そしてそれは応答するはずです
PUT /account/profile HTTP/1.1
Host: example.com
var=value
それが応答するように
POST /account/profile HTTP/1.1
Host: example.com
_method=PUT&var=value
Django用の非常にまともなプラグイン可能なAPIアプリケーションを探している他の人は、必ずBitBucketで内部的に使用されるjespernの Django-piston をチェックアウトしてください。
それはよく維持されており、素晴らしいフォローと、ページネーションや他の認証方法のサポートの追加などのクールなフォークがあります(OAuthはそのままでサポートされています)。
Django-pistonがメンテナンスされなくなったことを反映するために更新されました。
Tastypie は、新たに出現したREST Djangoのフレームワークでもあります。ピストンと同じ考え方を持ち、定型的なコーディングの多くを削除します。
ここで同じ質問に対する私の答え: 実装のフレームワークREST DjangoのWebサービス
短いバージョンは、 https://github.com/jgorset/Django-respite/ a RESTフレームワークの初期の段階ですが、クライアントプロジェクトで毎日。
Django REST apiをスクラップして、他の人が貢献できる独自のオープンソースプロジェクトを考え出します。喜んで貢献したいと思います。 RESTを実行するフォームAPIに基づいています。
JSONの結果を返すビュー関数をDjangoで書くだけにフォールバックすることを考えています。
私はそれで行きます。
ALi Aはかなりうまくまとめました。
私にとっての主なポイントは、明白で明白であることです。オブジェクトをjsonに自動的に変換する関数の使用は避けます。オブジェクトにユーザーへの参照があり、どういうわけかパスワードが(ハッシュされていても)jsonスニペットに入る場合はどうなりますか?
REST JSONを使用したAPIをDjangoアプリケーションに追加するための軽量フレームワークです。 Django-dynamicresponse .
既存のDjangoアプリにAPIサポートを追加するには、最小限の変更が必要です。新しいプロジェクトで最初からAPIを組み込むのは簡単です。
基本的に、JSONをrequest.POSTに解析するミドルウェアサポートに加えて、返されたコンテキストをJSONにシリアル化したり、リクエストタイプに基づいてテンプレート/リダイレクトを条件付きでレンダリングしたりします。
私は自分のREST API Framework for Django(私が実行可能な代替案を見つけることができれば私が取り除きたいと思っています)対処したくないコーナーケースでいくつかのカスタムビューがスローされました。
つまり、1と2の組み合わせです。何らかの形のフレームワークがなければ、一般的なケースで同じ定型文を書くことになります。
また、いくつかのスタンドアロンAPIも実行しました。私はそれらをスタンドアロンのサービスとして持つのが好きですが、コードの残りの部分からそれらがスタンドアロンであるという事実が、それらを無視することにつながります。技術的な理由はありません。単に視界の外、心の外に。
私が実際に見たいのは、DjangoフォームとREST APIは、多くのロジックを共有することが多いためです。それらを統合するアプローチです。何かをHTMLで公開し、プログラムで公開したい場合もあります。
webページを生成するビュー、およびjson/xml/whateverを生成するビューから呼び出すことができるデータ(処理された冒頭のような)を処理する汎用関数を作成してみることができます
TastyPieは非常に興味深く、有望に見えます。 Djangoと相性が良いです。