web-dev-qa-db-ja.com

REST to Django

うまく機能するDjangoアプリケーションがあります。 RESTサービスを追加しています。私のREST戦略に関する追加の入力を探しています。

ここに私が手に持っているもののいくつかの例があります。

  • 現在、私はDjango-REST APIを多数のパッチとともに使用しています。
  • JSONの結果を返すビュー関数をDjangoで記述するだけにフォールバックすることを考えています。
  • ApacheでRESTリクエストをフィルタリングし、Django以外の別のサーバーインスタンスにルーティングすることも確認できます。

回答ごとに1つのアプローチを指定してください。そうすれば、賛成または反対の投票ができます。

50
S.Lott

JSONの結果を返すビュー関数をDjangoで書くだけにフォールバックすることを考えています。

  • 明示的
  • 他のフレームワークに移植可能
  • Djangoにパッチを当てる必要はありません
59
Ali Afshar

RESTは、JSONの結果を意味するだけではありません。RESTは、本質的に、リソース指向のAPIをネイティブだが本格的なHTTPで公開することを意味します。私はRESTのエキスパートですが、Railsが行っていることのいくつかを以下に示します。

  • URLはリソースのわかりやすいシンプルな名前である必要があります
  • 適切なHTTPメソッドを使用する
    • HEAD、GET、POST、PUT、DELETE
    • オプションでオーバーライドあり(フォームパラメーター '_method'はHTTPリクエストメソッドをオーバーライドします)
  • Accept request-header によるコンテンツタイプネゴシエーションをサポート
    • オプションでオーバーライドあり(URLのファイル名拡張子はAcceptリクエストヘッダーのMIMEタイプをオーバーライドします)
    • 利用可能なコンテンツタイプには、XML、XHTML、HTML、JSON、YAML、およびその他の多くの適切なものが含まれている必要があります

たとえば、ネイティブ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
30
yfeldblum

Django用の非常にまともなプラグイン可能なAPIアプリケーションを探している他の人は、必ずBitBucketで内部的に使用されるjespernの Django-piston をチェックアウトしてください。

それはよく維持されており、素晴らしいフォローと、ページネーションや他の認証方法のサポートの追加などのクールなフォークがあります(OAuthはそのままでサポートされています)。

Django-pistonがメンテナンスされなくなったことを反映するために更新されました。

25
oliland

Tastypie は、新たに出現したREST Djangoのフレームワークでもあります。ピストンと同じ考え方を持ち、定型的なコーディングの多くを削除します。

7
RickyA

ここで同じ質問に対する私の答え: 実装のフレームワークREST DjangoのWebサービス

短いバージョンは、 https://github.com/jgorset/Django-respite/ a RESTフレームワークの初期の段階ですが、クライアントプロジェクトで毎日。

5
espenhogbakk

Django REST apiをスクラップして、他の人が貢献できる独自のオープンソースプロジェクトを考え出します。喜んで貢献したいと思います。 RESTを実行するフォームAPIに基づいています。

4
Sam Corder

JSONの結果を返すビュー関数をDjangoで書くだけにフォールバックすることを考えています。

私はそれで行きます。
ALi Aはかなりうまくまとめました。

私にとっての主なポイントは、明白で明白であることです。オブジェクトをjsonに自動的に変換する関数の使用は避けます。オブジェクトにユーザーへの参照があり、どういうわけかパスワードが(ハッシュされていても)jsonスニペットに入る場合はどうなりますか?

3
hasen

REST JSONを使用したAPIをDjangoアプリケーションに追加するための軽量フレームワークです。 Django-dynamicresponse .

既存のDjangoアプリにAPIサポートを追加するには、最小限の変更が必要です。新しいプロジェクトで最初からAPIを組み込むのは簡単です。

基本的に、JSONをrequest.POSTに解析するミドルウェアサポートに加えて、返されたコンテキストをJSONにシリアル化したり、リクエストタイプに基づいてテンプレート/リダイレクトを条件付きでレンダリングしたりします。

2
chrismi

私は自分のREST API Framework for Django(私が実行可能な代替案を見つけることができれば私が取り除きたいと思っています)対処したくないコーナーケースでいくつかのカスタムビューがスローされました。

つまり、1と2の組み合わせです。何らかの形のフレームワークがなければ、一般的なケースで同じ定型文を書くことになります。

また、いくつかのスタンドアロンAPIも実行しました。私はそれらをスタンドアロンのサービスとして持つのが好きですが、コードの残りの部分からそれらがスタンドアロンであるという事実が、それらを無視することにつながります。技術的な理由はありません。単に視界の外、心の外に。

私が実際に見たいのは、DjangoフォームとREST APIは、多くのロジックを共有することが多いためです。それらを統合するアプローチです。何かをHTMLで公開し、プログラムで公開したい場合もあります。

2
Parand

webページを生成するビュー、およびjson/xml/whateverを生成するビューから呼び出すことができるデータ(処理された冒頭のような)を処理する汎用関数を作成してみることができます

1
Jiaaro

TastyPieは非常に興味深く、有望に見えます。 Djangoと相性が良いです。

1
Cody