2012-01-25 18 views
5

İyimser kilitleme için ETag'ları kolayca kullanmama izin veren Django için bir REST çerçevesi seçmeye çalışıyorum. Django-pistonları ve Django Rest Framework kütüphanelerini incelemeyi planlıyorum, ancak GPL olmayan herhangi bir çözüme açıkyım (kurumsal lisanslama gereksinimleri bunları kullanmamı engelliyor).Bir Django REST uygulamasında iyimser kilitleme için ETag kullanma

Uygulamam, JSON/YAML biçimindeki bir SQLAlchemy modelinden (bir Django modeli değil) veri elde etmektir ve modulo'da ETag sorunu Django Rest Framework ile çalışmaktadır. Ancak, ETag başlıklarını görünümlerime uygulamanın kolay bir yolunu göremiyorum. Benim manzaralar için

, ben bunu yapmak istiyorum:

  1. bir yanıt Verilen

    kolayca ı başarısından gönderiyorsam yanıt başlıkları bir ETag ekleyin. Modele bağlı olacağından, bu benim tarafımdan hesaplanmalıdır; Yanıt değerini ya da bunun gibi bir şeyi yapmak yeterli değildir.

  2. POST/PUT üzerinde, aldığım ETüğün gönderdiğim adresle eşleştiğinden emin olun veya isteği reddedin.

Bana biraz sorun veren 1. adım; Hangi REST framework'ün bunu en kolay hale getireceğinden emin değilim, ne de en iyi yolunu başardığından eminim.

cevap

0

Çerçeve seçimi önemli değil. Her durumda, kaynağın durumunu temsil eden önbellekte (memcache veya redis) bir etag tutmak zorundasınız. Nesil Önbelleğe Alma Algoritmasını (https://signalvnoise.com/posts/3113-how-key-based-cache-expiration-works) kullanabilirsiniz. Daha sonra, her kaynağın etagini çıkaran ve gönderen bir mixin kolayca yazabilirsiniz. Kişisel deneyimimde, Django Rest Framework, ağır esnekliği ve iyi yazılmış kodu nedeniyle boşta kalacaktı.