2012-01-25 13 views
5

Próbuję wybrać strukturę REST dla Django, która pozwoli mi z łatwością korzystać z tagów ETag w celu optymalnego blokowania. Mam zamiar zbadać tłoki Django i biblioteki Django Rest Framework, ale jestem otwarty na wszelkie rozwiązania spoza GPL (wymagania licencyjne dla firm uniemożliwiają ich używanie).Używanie ETag do optymistycznego blokowania w aplikacji Django REST

Moja aplikacja to vending danych z modelu SQLAlchemy (nie modelu Django) w formularzu JSON/YAML, a modulo problem ETag działa dobrze z Django Rest Framework. Jednak nie widzę łatwego sposobu zastosowania nagłówków ETag na moich poglądach.

Dla moich poglądów, chcę to zrobić:

  1. Biorąc pod uwagę odpowiedzi, łatwo dodać ETag do nagłówków odpowiedzi wyślę na sukces. To musi być obliczone przeze mnie, ponieważ będzie zależało od modelu; nie wystarcza, aby zahamować wartość odpowiedzi lub coś w tym stylu.

  2. Na POST/PUT upewnij się, że odbierany ETag odpowiada temu, który wysłałem, lub odrzuć żądanie.

To pierwszy krok, który sprawia mi trochę problemów; Nie jestem pewien, który framework REST uczyni to najłatwiejszym, i nie jestem pewien, co to jest najlepszy sposób na wykonanie tego RESTER-a.

Odpowiedz

0

Wybór ramy nie ma znaczenia. W każdym przypadku musisz zachować etag w pamięci podręcznej (memcache lub redis) reprezentujący stan zasobu. Możesz użyć Generatory Caching Algorithm (https://signalvnoise.com/posts/3113-how-key-based-cache-expiration-works). Wtedy możesz łatwo napisać mixin, który wyodrębnia etag z każdego zasobu i wysyła go. Z mojego doświadczenia wynika, że ​​Django Rest Framework byłby bezczynny ze względu na dużą elastyczność i dobrze napisany kod.

Powiązane problemy