5

楽観的ロックに ETag を簡単に使用できる Django 用の REST フレームワークを選択しようとしています。私は Django-pistons と Django Rest Framework ライブラリを調べる予定ですが、GPL 以外のソリューションに対してオープンです (企業のライセンス要件により、それらを使用することはできません)。

私のアプリケーションは、SQLAlchemy モデル (Django モデルではない) からのデータを JSON/YAML 形式で販売しています。モジュロ ETag の問題は、Django Rest Framework でうまく機能しています。ただし、ビューに ETag ヘッダーを適用する簡単な方法がわかりません。

私の見解では、これを行いたいです:

  1. 応答があれば、成功時に送信する応答ヘッダーに ETag を簡単に追加できます。これはモデルに依存するため、私が計算する必要があります。応答値などをハッシュするだけでは不十分です。

  2. POST/PUT で、受信した ETag が送信したものと一致することを確認するか、要求を拒否します。

少し面倒なのはステップ 1 です。どの REST フレームワークがこれを最も簡単にするのか、またそれを達成するための最良の方法が何かもわかりません。

4

2 に答える 2

0

フレームワークの選択は問題ではありません。いずれにせよ、リソースの状態を表す etag をキャッシュ (memcache または redis) に維持する必要があります。世代別キャッシュ アルゴリズム ( https://signalvnoise.com/posts/3113-how-key-based-cache-expiration-works ) を使用できます。次に、すべてのリソースの etag を抽出して送信する mixin を簡単に作成できます。私の個人的な経験では、Django Rest Framework は、柔軟性が高く、コードが適切に記述されているため、理想的です。

于 2015-06-11T09:35:18.660 に答える
0

Django は、デコレータ (@etag、@last_modified、@condition) またはミドルウェアを介して ETag をサポートしています。ドキュメントを確認できます。これらのデコレータを Django Rest Framework で使用したい場合は、django-rest-framework-condition.

于 2019-04-11T10:44:41.697 に答える