PUT方法的请求模型应该和GET方法的响应模型是同一类吗



在我的应用程序中,后端将使用端点来获取和更新数据(使用get和PUT方法(。两个操作都使用完全相同的JSON模式。问题是,我是否应该为更新请求主体和获取响应主体使用相同的模型?你能告诉我把它们分开和组合的利弊吗?

谢谢。

PUT方法的请求模型应该与GET方法的响应模型是同一类吗?

参见RFC 7231:

给定表示的成功PUT表明,在同一目标资源上的后续GET将导致在200(OK(响应中发送等效表示。

PUT请求将具有与该目标uri的成功GET响应相同的媒体类型,这是正常的。

HTTP定义了消息的语义,但并不限制实现(请参阅Fielding 2002(。

也就是说,如果GET和PUT使用的表示因相同原因而更改,那么通用实现是合理的,因此当这两条路径共享相同的底层模型时,维护代码可能会更容易。

如果是同一类,那么单一责任原则呢?

我的答案是,在这种情况下,单一责任原则实际上并没有让你的代码变得更好,所以你不使用它。你可以用不同的方法来推广这个想法;一个是您使用的是数据结构,而不是";对象";。另一个原因是,这些信息正在跨越边界,在边界上,应用程序不是面向对象的。

表达这个想法有点不同:这里的职责是单一的(管理消息的一些内存表示(,但有两个不同的角色;GET场景的出站角色(您需要能够将消息转换为字节、描述内容类型等(,PUT场景的入站角色(需要从数据结构中提取信息单元(。

最新更新