我正在尝试为 Django 选择一个 REST 框架,这将使我能够轻松地使用 ETags 进行乐观锁定。我计划检查 Django-pistons 和 Django Rest Framework 库,但我对任何非 GPL 解决方案持开放态度(企业许可要求阻止我使用这些解决方案)。
我的应用程序正在以 JSON/YAML 形式从 SQLAlchemy 模型(不是 Django 模型)出售数据,并且模 ETag 问题与 Django Rest 框架一起工作得很好。但是,我看不到在我的视图上应用 ETag 标头的简单方法。
就我的观点而言,我想这样做:
给定一个响应,轻松地将 ETag 添加到我成功发送的响应标头中。这必须由我计算,因为它将取决于模型;对响应值或类似的东西进行散列是不够的。
在 POST/PUT 上,确保我收到的 ETag 与我发送的 ETag 匹配,或者拒绝该请求。
第 1 步给我带来了一些麻烦;我不确定哪个 REST 框架会使这变得最简单,我也不确定实现它的最佳方法是什么。