我怀疑在REST GET调用中应该在哪里生成etag
我的当前流是
-
initiate GET call
-
我从DB获得数据
-
将数据库中的数据转换为我的对象
-
返回对象到响应
我的疑问是关于etag应该在哪里计算
-
立即从DB获取数据后
-
或将数据从DB转换为我的对象结构后
-
计算响应对象
一般指导是我所寻求的
这个问题的答案取决于您确切的架构需求。一般来说,除非后端业务逻辑需要使用计算ETag,否则只有在数据库层或响应中生成ETag才有意义。
如果你的ETag被数据库系统用来检查冲突,那么最好在那里计算它,这样你就可以把功能放在同一个地方(#1或#2取决于你的转换代码所在的位置)。如果计算ETag只是为了返回给用户,那么在生成响应后计算它是最好的(#3)。
无论哪种情况,您都应该确保在同一阶段计算它并使用它,以避免在数据转换期间使您自己的etag无效。